Сегодня узнал в Game Maker о
Сегодня узнал в Game Maker о существовании Variables, которых раньше не было. А я заметил только пару дней назад, а сегодня почитал что это такое.
И ОХУЕЛ
Это ж, блядь, одна из самых гениальных фич второй гамако студии.
Я ждал её лет 6 после того как поработал с юнити.
Собсна фишка как пременные в префабах.
Теперь для объектов можно заводить переменные и указывать их тип.
Приколов несколько:
0) Инициализация ПЕРЕД событием create
1) Они наследуются и их можно переписывать у потомков
2) Их можно перепределять в редакторе комнат в свойстве объектов
3) Удобный UI выбора значения этой переменной в зависмости от её типа
Я уже могу придумать с десяток применений этой фиче.
Например задание начальных значений перемнных прототипам, в частности максимальное ХП противникам. То есть не нужо теперь явно указывать макс ХП в сreate, а в самом create уже можно использовать макс ХП чтобы инициализировать ХП противника.
Или можно задавать ХП противников прямо в комнате чтобы делать усиленных противников.
А ещё можно делать двери и кнопки. Заводишь переменную type и просто ставишь нужное значение, при этом есть тип list в котором можно использовать строки.
А ещё можно для дверей и переходов указывать комнату в которую следует перейти
А ещё можно для противников указывать лут, который они дропнут
А ещё можно указывать название игрового события которое должно произойти для того чтобы объект стал вести себя определённым образом, например конкретный ключ для конкретной двери.
Это при том что я ещё не углубляся в эту механику. Помимо стандартных типов real, int, string и resource есть типы типа expression, color, и у каждого типа есть ещё свои настройки.
Столько гемора с плеч просто.
Теперь мне НЕ нужно всё это менеджить через стандартные события и creation code.
В общем кто юзает Game Maker Studio 2 — имейте в виду эту крутейшую фичу.
- 28 мая 2019, 21:52
- 015
Знатный апдейт, Хейз, спасибо за новость!
Андрюха как всегда ничего не понял, лучше б и не комментировал если не разбираешься. Переменные в ГМе были, а то что Хейзер показал, называется Variable Definitions, а не просто Variables.
На котором игра делается в 10 раз быстрее, а ограничения мешают только визионерам новых жанров, коих в мире, ну, людей 10-20 всего.
Делал пару месяцев проект на гамаке. Скорость сильно падает после второй недели работы когда у тебя 50+ файлов и одновременно надо помнить где какая переменная и какой скрипт что делает.
Для прототипов, джемов и новичков гамак хорош, для всего остального - дело вкуса.
Зачем помнить? Есть поиск по коду и комментарии. Или в каких-то средах разработки это удобней организовано?
Думаю, тут имеется ввиду сама структура IDE и необходимость создавать физический объект новому классу.
в любой иде, даже в простых реакторах типа vscode можно кодить не трогая мышку и не вылазия из одного таба. есть хоткеи для поиска всех ссылок к переменной/функциям, переименования символов во всех местах сразу, настраиваемые сниппеты, удобная строка открытия класса по аббревиатуре и прочие ништяки без которых навигация по коду существенно замедляется.
в гамаке это делается либо платными аддонами либо через подключение внешнего редактора, но я так и не нашел как это нормально сделать. а между тем это такой же фактор скорости разработки как и отсутствие необходимости писать какие-то вещи которые в гамаке есть из коробки.
Я сказал "делается игра", а не "пишется код". Код - всего лишь средство реализации игры, а надобность "помнить где какая переменная и какой скрипт что делает" это признак переусложнённой (слишком сильно связанной) архитектуры, тобой придуманной.
Сниппеты были в ГМе давно, я их не использовал никогда, потому что не нужны. "Поиска всех ссылок к переменной/функциям" - поиск по CTRL+SHIFT+F, но нужен он редко - тогда, когда сам напортачил изначально. От IDE правильный подход к написанию программы никак не зависит.
"переименования символов во всех местах сразу" - в том же CTRL+SHIFT+F есть Replace All. Переименовал лишнего? Значит плохо придумал названия, недостаточно уникально.
Этого честно говоря не понял.
Ну в общем не получится диалога о нормальных иде с человеком который ими не разу не пользовался
Зачем мне говорить о твоих IDE? Я программировал на C# ещё с 2007 года, но кодинг это не разработка игры. Так что диалога не получится, да, но не по указанной тобой причине, а потому что ты сводишь геймдев к кодингу. На деле он им не является даже наполовину.
Ты опять ушел в свою в демагогию которой прикрываешься каждый раз когда речь заходит о программировании. Но предыдущим ответом ты показал что опыта кодинга у тебя на самом деле нет, либо он очень поверхностный (иначе ты бы не стал сравнивать Replace All с Rename Symbol, знал бы про class search и не писал бы хрень про рефакторинг).
Предлагаю тебе для повышения качества своего троллинга и расширения кругозора вылезти из своей конуры и посмотреть что нового за последние 15 лет появилось в геймдеве.
Это говорит человек, который юзает Фазер3, этож просто пиздец в кубе.
Как бы меня скил разработки игры далеко не нулевой и каждый может в этом легко убедиться. Но фазер оказался просто за гранью моего понимания.
Не знаю как для тебя но для меня есть разница работы в контектсе "1 объект = одна сущность" или "1 объект = три миллона классов, гексалион интерфейсов, хуелиард параметров".
При количестве сущностей более 10 у меня уже едет крыша от всего этого.
Мне так же не нравится эта ебанутая иерархическая архитектура "в комнате контроллер, в котором группа, в которой объект, в котором спрайт, в котором текст и т.д." Там же концы с концами не сведёшь, и в лучшем случае ты сможешь доступаться до свойств через индексацию, в худшем - тебя поимеют через глобалы, причём в языке где все типы являются ссылочными. "Добро пожаловать на расстрел ноги!"
Может быть там и есть какая-то мифическая супер-производтиельность если ты с рождения булеву алгебру изучал... Но для простых людей которые просто хотят игру сделать - нахер это надо?
Лол. Вторая страница в выдаче яндекса - твой пост.
Хрензерг прямо вклад в сообщество сделал.
Ну так и надо говорить - "я делаю игры на гамаке потому что в других движках мне лень разбираться", а не притягивать за уши какие-то сомнительные аргументы об универсальности гамака и как он чудесно скейлится для любых игр.
Фазер - типичная обертка над gl-движками, такие api еще во времена sfml делали. Если посидеть с ним неделю все становится прозрачно. С гамака я тоже плевался, но пересилил себя и разобрался что к чему. Посмотрел своими глазами на все его минусы и сделал взвешенный вывод, что в сравнении с другими движками он выигрывает только в очень ограниченном круге задач.
Я не топлю за какой-то определенный движок, но когда черное называют белым меня начинает триггерить
Лол, Хейзер пробовал больше игровых движков чем вообще ЛЮБОЙ разраб-гаминец. Хотите посчитаем?
Гамак скейлится только на 2D-игры, скажем честно. В остальном - даже не знаю чем его ограничить.
А толку считать, если для тебя попробовать движок - это посмотреть на апи, ничего не понять и написать пост о том какой плохой движок.
Ты когда-нибудь открывал чужой проект на гамаке и пробовал там разобраться?
Да.
Исходник Spelunky написан катастрофически отвратительно, я словил десяток баттхёртов при взгляде на ЛЮБОЙ из объектов. Связано это с тем что Дерек Ю художник-спрайтер и кодил этот проет как мудак как умел.
Исходник Iji, который я многократно дата-майнил и реверс-инженерил для того чтобы помочь людям русский перевод игры, написан более-менее вменяемо. Я думаю, я мог бы сделать мод этой игры с лёгкостью, если бы задался такой целью.
Исходник свободного Mega Engine, пожалуй, написан лучше всего что я видел.
Исходник Princess Remedy где-то рядом, неплох.
Но зачем они мне, если я всё себе пишу сам и этим доволен?
А говна на лопате?
1) Попробовать сделать механику.
2) Увидеть кучу кривизны и недостатков в своей реализации.
3) Понять места проёбов и поспрашивать у профи как правльно этим пользоваться - получить в ответ несколько библиотек или тонну кода, который может и более правльный но его больше и он сложнее.
4) Посправшивать как оптимизировать те или иные функции и получит в ответ "никак"
В своё время закончил знакомство с Java после работы с коллекциями. Хотел итератор перегрузить чтобы работать как с массивом. На вопрос как перегружать итератор, от разработчиков Java получил оффициальный ответ "никак, мы решили что программистам java не нужен этот функционал"
У меня в C# есть перегрузка итератора, а в Java - нет. Смешно, правда?
Примерно в такого рода разочарования я упираюсь когда изучаю другие движки. Я хочу сделать удобнее чем в Гамаке, например, но нужный функцинал там попросту отсуствует или реализуется ОЧЕНЬ сложно. И это вдвойне смешно учитывая как я часто слышу от программистов "могу настроить под себя". А я вот не могу практически. Сложно это.
Мне осталось жить максимум лет 50-60 и я не хочу тратить даже часть этого времени чтобы заставить что-то работать как мне удобно, когда под рукой уже есть то что работает удобно и оптимизирует мою работу в 10-20-30-40-50 раз быстрее.
Треть из этого - сон.
Я просто не вижу смысл делать 50-60 лет одинаковые игры на гамаке, в которые играет из вежливости 10 человек. Но если тебе это по фану, то крепкого тебе здоровья и успехов
И это мне говорит чувак, который сам делает одинаковые игры =)
>>Мне осталось жить максимум лет 50-60
Хейзеру 5-10 лет? о_0
Сингулярность - бессмертие
(о, привет, Разери)
Я делаю игры на гамаке потому что начиная разбираться в движках я увидел что объективно потрачу на 1000% больше времени на код чем то же самое на GMS. Или потрачу ещё несколько лет чтобы знать движок настолько чтобы уметь в нём писать с полпинка =) А за это время я мог издать с десяток игр.
Зачем мне это, если я делаю игру, а не занимаюсь код-инженерингом?
Ясное дело в гамаке есть свои проёбы. Нельзя свои дата-структуры делать, например, да и сами дата-структуры так себе. Или классы с кастомными событиями, новые типы событий добавлять нельзя. Но я каждый раз спрашиваю себя "А зачем мне это? Как это мгло бы ускорить разработку?"
Вот есть в php ассоциативыне массивы - супер гибкие мне прям нравятся, против убогого подобия массивов гамака и его словарей. В javascript есть анонимные функции и замыкания. А в гамаке есть скрипты - которые О УЖАС не привязаны к объектам и живут в сферическом ваккуме.
Но зачем мне именно такой функционал при разработке игры я представить себе не могу, например. Зачем мне в гамаке функцию в качестве аргумента уметь передавать? Да хер его знает. В JS это дешёвый способ обработчик событий сделать - типичная бытовуха, а в гамаке... Там эти куски кода и есть анонимные функции и вроде как уже и не нужен такой функционал, т.к. он зашит в саму IDE.
Они решают одну и ту же задачу, только то что есть в ГМе потребует от тебя чуть больше ручной работы по отсеиванию левых результатов (в которых ты сам же и будешь виноват - надо было называть переменные понятно и достаточно по-разному). Вместо того чтобы иметь претензии к инструменту, надо выполнять поставленные задачи.
Ничего из того что ты перечислил, не имеет отношения к геймдеву, а имеет отношение только к перекладыванию с места на место кода, названий и классов.
Ну да, куда уж мне до тебя! :yak:
https://kolenka.net/blog/procedural_generation/tekx-chto-pod-kapotom.html
https://kolenka.net/blog/procedural_generation/audio-spektralnyj-printer.html
https://kolenka.net/blog/gamemaker/gm-xd-gms-xd-alternativnyj-debagger-dlya-game-maker-81-studio.html
Изменение кода - такая же естественная часть процесса разработки как и его первоначальное написание. Если ты не меняешь свой код, то тебе вообще пофиг на чем писать. Строчи игру сверху вниз и радуйся.
Ты код покажи то. Выглядит как что-то такое, что студенты на лабах пишут в старых советских редакторах.
Ты говорил об опыте кодинга, а не о соответствии чьим-то там стандартам, "хорошим практикам", паттернам программирования, методологиям разработки ПО, и прочей корпоративной шелухе. Хочешь видеть код - посмотри его ILSpy'ем. Мне неинтересно тебя в чём-либо убеждать, так как от твоих убеждений ничего не зависит, тогда как мои программы работают, пишутся они быстро, и иногда это даже игры, но - никому не посоветую пытаться делать игру на C#, C++, Java, AS или чём-либо подобном. Я переписываю части кода регулярно, а вот переименования символов по ВСЕМУ проекту и глобальный рефакторинг целых иерархий классов - это то что нужно нормальному кодеру чуть чаще чем никогда.
То что ты скинул попадает под категорию поверхностного кодинга, как я и предполагал. Не написав ни одного проекта больше 10к строк ты рассуждаешь о разработке игр как будто знаешь как все в этой области устроено. Если не хочешь мне что-то доказывать зачем тогда каждый раз начинать этот бред про скорость разработки?
Для того чтобы зелёные новички не велись на твою ахинею про какую-то мифическую связь между 999к строк кода и компетентностью в геймдеве. Исходник Castle of no Escape 2 умещается в 100КБ, и я понятия не имею сколько это строк, потому что мне это не нужно. Если "поверхностный кодинг" позволяет делать подобные игры, то какая разница, поверхностный он или нет, если игра - вот она, работает, продаётся, что ещё надо-то, лол.
квадратная игра 256x256 - прекрасное доказательство масштабируемости движка
А какую игру надо сделать, треугольную?
Я могу сделать клон любого твоего прототипа, за выходные. А ты моего, на своём инструментарии - скажем, далеко не факт.
если твой потолок - делать клоны, так тому и быть. для меня разработка - это прощупывание механик и постоянное улучшение прототипа путем проб и ошибок.
если мне, прости Господи, понадобиться в короткие сроки сделать типовой тайловый рогалик или платформер, я всерьез рассмотрю гамак как инструмент.
А кто говорил о потолке? Клоны это как семечки щёлкать. Ну в общем, понятно. Щупай там, удачи.
Ты меня всю дорогу на словах ловишь вместо того чтобы по делу отвечать. Скользкий ты парень.
это я вообще в цитатник сохраню
Лол, сам рисует какие-то потолки из воздуха, а потом приписывает их мне.
По делу я уже сказал - Гамак прототипирует в разы быстрее любую двухмерную игру, чем любой современный игровой движок.
Ты приводишь в пример клоны игр на геймбой и бросаешься такими высказываниями. Что их пототипировать - бери и делай. Ты спрототипируй мне что-то RTS-подобное с кучей механик и не тайловыми коллизиями
Этот "клон игры на геймбой" - дебютный самофинансированный инди-проект моей команды. Приводился он, напомню, в контексте того что я понятия не имею сколько там строк кода, а соответственно это знание не имеет никакого значения для геймдева.
Ты имел в виду Технокочевников?
Стоп. Я кажется понял. Ты отталкиваешься от стоимости разработки, поэтому используешь движок который может освоить в короткие сроки любой новичек, которому не надо платить. Поэтому так яростно рекламируешь гамак.
Я прав?
Допустим, только учти что там много технических примочек, которые закладывались с расчетом на мультиплеерную игру в открытом мире.
Нет, не прав. Гамак стоит $100, и он не настолько прост, чтобы прям новичок его освоил быстро. Я пытался обучать людей, к этому нужно то что я назвал бы "чувством игры". Кодеры осваивают Гамак, но толку от них потом почти никакого.
Хотя если говорить о быстрых грязных методах разработки, то любую IDE можно просто пиратить. Но зачем создавать себе сомнительный юридический фундамент?
Так а мне-то что с этого? Ну, как я это в игре увижу, или зачем мне прогать это заранее?
Я к тому, что кочевники это вымученный прототип и разработка шла не линейно, было 6-7 итераций геймплея и осталось куча невидного в игре функционала. 6-7 циклов написания кода, плейтеста и переделывания за 3 недели. Там каждая строчка кода минимум трижды менялась. Пили я это на гамаке мне пришлось бы выбрасывать все в помойку каждый раз когда я хотел бы внести масштабное изменение в прототип, потому что средствами гамака это сделать нереально.
Ну, имитировать весь путь создания Технокочевников я точно не буду. Такое количество переписываний означает что геймдизайн очень много менялся где-то в процессе, но важно в итоге только то, чем стала игра в конце. Так что клонировать легче чем строить с нуля, но в исходном утверждении я говорил именно о клонировании результатов, а не всего прототипирования.
Было бы круто если б я пример такого услышал. Ну просто для интереса.
Посчитай сколько раз ты написал про клонирование и сделай выводы
Видимо, вывод должен заключаться в том что "Гамак годится только для клонирования квадратных геймбоевских игр, а также игр без интерфейса, не похожих на РТС и без кучи механик"? О горе мне!
Раз ты перешел на сарказм, я так понимаю доводы кончились.
Да нет, скорее подходит к концу моя вера в диалог.
Клонирование было упомянуто как критерий ёмкости и удобства движка. Читай, "на всех других движках даже просто клонировать уже готовую игру будет дольше и сложнее, чем на Гамаке".
То есть ты так наивно полагаешь что на гамаке нельзя сделать мультиплеер?
Учитывая, что его делали ещё в далёком 2009-ом на седьмой версии XD
Ну назови хоть одну механику которую будет сделать удобнее и быстрее на твоём инструментарии чем на гамаке =)
Что угодно с интерфейсом?
Это означает что на твоём инструментарии есть набор для создания GUI? Но он предварительно написан, и не является частью IDE. Можно написать точно такой же свой и его использовать. Я когда-то написал свой такой.
https://www.dropbox.com/s/lf7xl4das1vfsi8/GM%20GUI%201.0.exe?dl=0
То есть лишнее программирование в играх не приветствуется, но есть когда для гамака надо писать костыли - это простительно
"Ой смотрите, у моего движка готовые фигурки в коробочке, а у вашего нет, хаха!"
Мы не о том спорили. "Что угодно с интерфейсом" это не механика, это наличие интерфейса. И если тебе удобно делать именно интерфейс в твоём движке, а в Гамаке неудобно, это с точки зрения геймдева/дизайна ничего не значит.
Как же ты любишь увиливать. Я, как программист, задал хайзеру, как программисту, в посте про программирование на GML конкретный вопрос про программирование на GML. Какого лешего ты влез со своей демагогией о том что нужно в движке а что нет? На кой хрен ты пытаешься строить из себя какого-то авторитета? Зачем в каждом втором коменте подлизывать хайзеру? Это все не так забавно как ты думаешь.
Я понял твой подход к клонированию разработке, можешь остаться при своем мнении и клепать свои коммерческие проекты до старости. На своих фанатах и самоутверждайся, я не из их числа.
У меня есть фанаты? Фанаты есть только у игр что я издаю, а сам я не знаменитость и мне это не интересно. Авторитета начал из себя строить не я, а ты со своими "если хочешь вырасти, расскажу тебе как это сделать"; я лишь пытался понять из твоих ответов, что такого у тебя есть, чтоб у тебя чему-то учиться.
Не в нём дело, а в том, что наше с ним мнение совпадает на 99%, так как оба из нас пробовали разные движки, и оба из нас остановились на ГМе.
То есть чтобы твой движок стал уметь из 2Д игры 3Д игру или из платформера стратегию - достаточно щелчка твоих пальцев?
А я думал что в ваших этих копрорациях учат не так, а что изменение кода - это затратная операция, которая стоит человекочасы, и что обычно сперва производится анализ и WBS, проектирование архитектуры а потом пишется код. Ты ведь лид? Если каждый твой джун постоянно меняет код - это ведь проёб бюджета проекта =)
Да и паттерны разве придумывали для того чтобы код менять? Хороший программист берёт и пишет код сверху вниз, да =)
Не знаю как в твоей компании, а в моей когда код меняется - на такого программиста очень косо смотрят...
Каких файлов? Если ты про дерево ресрусов, то группировать же их можно.
А в "нормальных IDE" не нужно? Мне кажется, что там этот микроконтроль контекста возведён в абсолют =)
Мало того что у тебя на один объект приходится довольно много обслуживающего кода так ведь и сам объект как правило - длиннющая портянка классов. А если следовать правилам "хорошего ООП программирования" то эта порятнка должна рефакториться на более мелкие файлики. В итоге на один объект у тебя выйдет довольно много файликов. По сути то же самое что и в GMS, только в GMS это удобно собрано в UI IDE, а не набором текстовиков, раскиданных по папкам.
А я наоборот не рискну делать масштабный проект на чём-то типа фазера =)
Сгруппировал, и что дальше? Все так же гулять по иерархии когда мне нужно от одного объекта перейти к другому и обратно.
В нормальных IDE у меня вообще нет контекста. Я в паре нажатий клавиш от любого места в коде, а нужный хоткей мне покажет все что нужно знать о том где я, даже если я с бодуна сажусь кодить проект который полгода не трогал.
Фазер явно нанес глубокую травму твоему эго
А зачем тебе область в центре экрана. Открыл сколько нужно объектов и гуляшь между ними. Хоткеи в GMS2 у уверен что есть.
Ну это из серии "Смотрите, я а я могу ездить на роликах по канату с завязанными глазами, со слоном на плече!".
Но ведь тебе нужно ЗНАТЬ что нажимать чтобы оказаться в нужном месте кода - то есть ты уже должен держать в голове контекст своей программы где и что у тебя расположено, иначе ты выунжден погружаться в этот контекст и тратить время которые ты пытаешься сэкономить.
Вот я открыл в GMS два объекта параллельно и могу работать с ними:
И вместо порятнки кода JSON-style я имею user-friendly интерфейс, в котором все события классифицированы и имеют свою уникальную мконку, а между событиями я переключаюсь табами, а не поиском по всему проекту. Автокомплит подскзывает мне нужные функции/переменные/ассеты.
И уже который раз мне "тру разработчики программисты" заясняют что иметь порятнку кода на три километра - это круто и в ней пиздец как удобно ориентироваться нажатием пары клавиш и выбором из контекстного меню.
Но я лично не представляю как можно ориентироваться в 50+ таких портянок как ты говорил выше =)
Я могу сам создать себе контекст из нужных ресурсов.
Делаю босса - открыл только то что относится к боссу. Делаю врагов - то что к врагам. Делаю логику игрока - открываю только это. Закончил - закрыл, открыл новое.
На скрине выше контекст настройки объектов и логики. Когда я работаю с графикой, уровнями, звуками - я нахожусь в другом контексте. IDE даёт мне много инструментов, чтобы я мог организовать этот контекст как мне удобно, и дажее более - я могу себе таких рабочих областей сделать сколько угодно и переключаться между ними щелчком мыши без комбинаций клавиш. Уже посмотрев на этот конекст я с бодуна точно так же могу сразу начать работать с проектом.
И да, т.к. GMS предоставляет скриптовый язык, то именно "писать когда" нужно значитально меньше если ты работаешь с обычными ЯП на фреймворках. Тебе приходится преодолевать больше рутины, а порой погружаться внутрь конекста фреймоворка. То есть ты кода напишешь больше, напишешь его быстрее, но насколько он будет качественный и выразительный? На собственном опыте могу сказать что одну и ту же функцию на GMS и Phaser угадай где быстрее и проще реализовать?
Итого в нормальных IDE чтобы завести работоспособный проект мне нужно иметь довольно файлов, в то время как в GMS пара спрайтов, пара объектов и комната.
Ну просто чисто объективно если на одну сущность
1) В фреймворках на нормальных IDE приходится несколько классов и даже интерфейсов
2) В кривых конструкторах я на одну сущность имею одну сущность
И как может быть с ростом проекта проще менеджить сущности если с ростом проекту в "нормальных IDE" рост сущностей будет в прогрессии, в то время как в "кривых конструкторах" он практически линейный?
Твои скриншоты мне сложно даже смотреть на моем маленьком макбуке, на котором я даже на юнити умудрялся нормально делать игру (потому что там подключается сторонний редактор кода).
Эти "сущности" ограничивают тебя больше чем ты можешь себе представить. Любой ооп движок позволяет тебе сделать объекты настолько модульными насколько это тебе нужно и жонглировать ими, собирая как из кусочков конструктора игру. Только этот конструктор сделал ты сам усилием своего мозга и знаешь досконально как он устроен, можешь менять как хочешь и делать с игрой все что душе угодно. Звучит абстрактно, но на примеры у меня времени нет - гаминатор все-таки идет. Может потом распишу если тебе интересен какой-то рост.
Рост... до чего? Сколько тысяч людей твоя фан-база или хотя бы просто овнеры твоих игр? Сколько ты заработал? Куда предполагается расти-то?
Ты достал свой последний аргумент? Немного нечестно меряться аудиториями наших игр потому что я несколько лет работал тимлидом в геймдев конторе и писал игры на миллионы игроков. Кодить большие вещи я умею, поверь.
Твоя работа тимлидом в конторе не имеет отношения к нашему контексту инди-разработок. Сам-то ты умеешь только кодить, а Гамак отталкиваешь по чисто корпоративным причинам - по его использованию слишком мало протоптанных тропинок, которые можно просто выдать своим подчинённым-кодерам и потом их локтями толкать "а чё эт ты там не прошарил материал?".
Больше кода или архитектура - не значит лучше. Надо геймдизайнить интересно, а не кодить много.
Но, чтобы завернуть начатую тему, рост до экс-тимлида геймдев конторы это для инди-разработчика и автономного автора не рост. Кроме как если контору основал ты сам.
ну допустим. ты сам свел спор о разработке к мерянью игроками а теперь сдал назад и мой опыт работы в продакшене оказывается не релевантен для инди. несколько лицемерно, не находишь?
Я не сдавал назад, это ты вместо чтобы нормально перетереть один на один, притащил в обсуждение каких-то левых людей, чисто как гопота на раёне. Короля играет свита, и лично ты, в отрыве от своей инфраструктуры, которую ты почему-то считаешь дефолтной, мало что можешь сделать.
И мой долг, как представителя автономных авторов видеоигр - развенчать эту установку, что инфраструктура вообще должна быть. Что код должен измеряться тысячами, а рефакторинг нужен абсолютно всем и каждую секунду. И прочее. Я бы ещё пообщался, но на этой глубине вложенности комментариев нас уже никто не слушает - "В интернете кто-то неправ", и ладно.
Мой изначальный тезис казался гибкости Гамака, которую вы с хайзером считаете безграничной. На мои доводы что кодить на нем большие проекты не удобно ты отвечаешь мол зачем большие если можно делать мелкие и радоваться прибылям.
Вопрос - в какой момент мы перешли к обсуждению строк кода?
Что такое "большой проект"? Где заканчивается маленький и начинается большой? Вот конкретно игры назови.
Строки кода обсуждаются не в этой ветке. Где-то в тот момент:
То есть мне опять за тебя логическую цепочку строить? Ну хорошо:
c: в гамаке нет средств рефакторинга и это мешает
x: рефакторинг не нужен
c: ты не делал проекты в которых он нужен
x: вот смотри что я делал
c: выглядит как лабы
x: ты не говорил что надо не лабы
с: не лабы начинаются от 10к строк
x: СЧИТАЕШЬ СТРОКИ ФУУУ
поправь если я не прав, но помойму ты слился
ЛОЛ. В гамаке нечего рефакторить потому что устроен оптимальным для разработчика образом XD
рефакторинг нужен для изменения своего кода. но я уже понял что свой ты сразу отливаешь в граните
Починил:
c: в гамаке нет средств рефакторинга и это мешает
x: рефакторинг прекрасно делается руками, и нужно это очень редко
c: опыта кодинга у тебя на самом деле нет
x: вот смотри что я делал
c: выглядит как лабы
x: это не важно
с: не лабы начинаются от 10к строк
x: мы вам перезвоним
Да, если бы это был приём на работу, то я слился тебя принимать, это точно.
Что такое "большой проект"?
что-то с несколькими механиками и интерефейсом.
salt and sanctuary, mad world, незнаю что там еще из свежего
А что такое гибкость?
Гамак не всё может но 90% типовых задач он точно охватывает и справляется с ними быстрее чем аналогичный тру-программинг-инструментарий.
Заебал уже абстракциями манипулировать.
Не матерись.
Гибкость = модульность. Я могу сделать набор поведений и навешивать их на любые обьекты без костылей.
Могу в любом месте кода собрать любую сущность и передать ее в любое место. Это позволяет мне без костылей вытаскивать какие-то вещи в отдельные классы с логикой и менять их одновременно везде где мне надо.
В Гамаке можно создать скрипт и вызвать его из любого объекта, главное быть уверенным что все переменные с которыми скрипт работает, в объекте существуют. Для того чтобы прям гарантировать что они существуют, можно добавить скрипт их инициализации в конструктор объекта. По сравнению с множественным наследованием, имплементациями интерфейсов и прочей утиной типизацией, это абсолютно не костыли, и полная свобода применения любых алгоритмов к любым объектам.
Также можно вызывать события одних объектов от имени других, то есть выполнять код другого объекта с другим поведением, будучи в окружении своих переменных, и таким образом выполнять поведение другого объекта, не наследуя его, не имплементируя его интерфейсы и даже не используя скрипты.
Учитывая что на скрипты и события можно ссылаться переменными, то мы получаем, что объекты могут менять динамически своё поведение в реалтайме.
Вплоть до того что можно новые объекты с новым кодом создавать на лету. На Гамаке можно сделать игру, которая генерирует сама себя...
...Так было в 2011 году в GM8.1, пока не пришла Студия, и сделать это стало невозможно. Но сам факт. Сказанное относится только к четвёртому абзацу про новые объекты на лету. Всё остальное реально в любых Гамаках.
Это и есть без костылей. Написал код в скрипт, назвал скрипт, имя скрипта написал в код объекта - всё, вот тебе поведение. Написал 5 скриптов для 5 поведений - комбинируй их в любом порядке в любых объектах.
Вот в том то и слабая сторона что ты должен ВСЕГДА знать как он устроен , т.е. быть в его контексте. Поэтому все твои слова
Просто откровенный пиздёж =)
И весь прикол в том, что в Game Maker у меня ни разу не возникло мысли что-то менять, при том что я всегда делал со своей игрой что моей душе угодно =) Всё гениальное просто, а в простом не нужно ничего менять.
Если в твоём конструкторе нужно что-то менять значит усилие твоего мозга было слабым и несовершенным. Я признаю этот факт, поэтому задачу проектирования конструктора для игр оставляю сверхразумам. А я лишь жалкий человечек пользуюсь плодами чужого интеллектуального труда отабшляв пару сотен баксво, такие дела, да =)
Извини, но именно поэтому все твои игры и выглядят сделанными под копирку. Если тебя это устраивает, мне очень жаль
Не поэтому. Есть ещё такой фактор как вкусы автора, и жанровая инертность, не зависящая от IDE никак. Может, неинтересно ему делать RTS, файтинг, и ещё сто разных жанров. Особенно по поводу слова "выглядят" - это речь о графике. ИГРАЮТСЯ его игры по-разному, и глупо судить об играх по скриншотам.
то есть ты не видишь причинно-следственной связи между жанровой инертностью и нежеланием выходить за рамки движка?
Нельзя найти чёрную кошку в тёмной комнате, особенно если её там нет. У Гамака нет таких рамок, которые сковывали бы Хейзера, просто он за них не выходит потому что так привык и это его выбор.
Вы и так тут двое на одного, может хоть отвечать друг за друга не будете
Так приводи друзей, пускай будет два на два, чё. Только таких, которые пробовали Гамак, а то будет глупый религиозный шабаш, а не обсуждение.
У нас и так религиозный шабаш, потому что из нас только я нормально работал со обсуждаемыми движками и на себе прочувствовал плюсы и минусы обоих.
Мой карманный прочувствометр не подтверждает этой информации.
Ну как бы... Я задал вопрос про навигацию в большом количестве скриптов и мне ответили тем, что как я плохой кодер и если бы делал правильно то все было бы в одном файле.
Я имел в виду утверждение "только я нормально работал со обсуждаемыми движками". Может, не только ты? Как знать-то.
Ну судя по тому что ты пишешь, с GameMaker-ом ты работал точно так же как я с фазером. Недолго и невсерьёз.
Давай обменяемся сделанными проектами и посмотрим?
Я не вижу никакой следственной связи между жанрами и движками. Погугли игры сделанные на Game Maker И удивись.
А за эти слова хочешь поотвечать?
Хотя бы ответь чего общего у Sig.NULL и ATTWN, например. А у Heavy Memories и Tower Bombarde? Или может ты хочешь поискать чем похожи Zzzz-Zzzz-Zzzz и Danger!Energy?
Я люблю платформеры и метроидвании. Поэтому делаю в оснвоном их, но это не значит, что другое не могу.
Ну и смшено такие упрёки слышать от человека чьи проекты визуально похожи друг на друга ещё больше чем мои XD
Покажи мне два похожих чтоли
Только после того как ты найдёшь пару одинаковых у меня =)
ну у тебя есть белые платформеры, кислотные топ-даун пазлы и 3д бродилки
Не только фазер. Я и AS пробовал и Flixel и Phaser2 и Phaser3. Это всё одна залупа. У них у всех очень схожая архитектура, но всё равно каждый раз приходится лезть внутрь движка чтобы разбираться в этом всём.
Я часто слышу "Я могу настраивать как мне нужно". Ну вот ты можешь прям взять из коробки и построить на Фазере игру? Не погружаясь в устройство этого движка. Я вот не смог. Я пытаюсь юзать сущности из коробки и оказывается что они не умеют элементарных нужных мне вещей. И мне приходится вертеть жопой чтобы понять как где чё устроено, какой класс какие объекты в себе содержит, а те в свою очередь свои объекты.
Хочу цвет задать. Вместо того чтобы просто задать цвет мне порой нужно создать новый супер-навороченный объект с цветом, в котором хуелиард функций на все случаи жизни, он даже за хлебом наверное может сходить если чо. А мне нужно было просто RGB-цвет задать. Мазафака. А потом оказывается что у него есть куча разных конструкторов и самый простой мне не подходит потому что он не совместим каким-нибудь альфа-какналом, и мне нужно юзать сложный - лезть в доки и разбираться почему у меня нихуя не работает и как мне что нужно настроить. Напомню - я просто хотел задать цвет. Задать ширину линии, нарисовать линию, работа с примитивными функциями оборачивается гемором.
Вот есть у меня объект и я хочу поменять ему цвет спрайта. Что я должен сделать? Сперва взять спрайт, потом и уже через спрайт поменять ему цвет. И так какждый раз. Или пиши функции-обёртки, которые позволят напрямую это делать и будут по-дибильному называться. И когда я вижу что-то такое
object.sprite[0].imageProperties.colorOverlay=COLOR_OVERLAYS.regular.red.light
Ну это меня в уныние просто вгоняет. Мне это не нравится и я хочу это развидеть, можно?
И мне программисты сразу орут хором МОЖНО, КОНЕЧНО МОЖНО! ВСЁ ЖЕ ПРОСТО!
НАПИШИ ФУНКЦИЮ.
Вот она:
function setColor(color) {
object.sprite[0].imageProperties.colorOverlay=COLOR_OVERLAYS.regular.red.light
}
А потом вызвать её:
object.setColor(COLOR_OVERLAYS.regular.red.light)
И в чём смысл этих "упрощений"? Я всё равно пишу то же самое да ещё и сущность новую создаю, которую теперь должен держать в голове. Ну да, где-то в списке я потом увижу метод setColor, но что он делает, какие параметры принимает?
А что мне нравится? Мне нравится вот так писать:
image_blend=c_red
Просто и понятно из самих названий.
Я вынужден погружаться в супер-проектирование для задачи в которой можно было бы без этого обойтись если бы я не был настолько рабом ЯП и фреймворка на котором вынужден писать.
Так вот типа если ты там наследуешься то вот там теперь тебе нужно вот это прописать, а т.к. ты ещё и интерфейс реализуешь - нахуярь десяток пустых местодов пожалуйста, которые тебе ваще не обосрались, но блядь должен их написать потому что СИНТАКСИС такой. А всего лишь хотел немного расширить функционал того что мне предлагают из коробки.
Если я класс хочу свой создать отнаследовавшись - ну ОК, только перед этим создать несколько методов пустых или с super. Ну просто потому что. ОК, мне не сложно, играю по правилам. Но для того чтобы расиширит функционал класса на одну функцию я уже пишу минимум две =) Зачем это нужно? Это ведь лишний мусор, который отвлекает от чтения кода.
Какой смысл в этих фреймворках если я кажды раз вынужден ковырять внутренню архитектру? Ведь не должен! Ведь фреймворк на то и фреймворк что сделал всё за меня. Это же типа набор готовых методов! Но чтобы их расширить нужно пройти девять кругов Ада.
Я по работе делал на Фазере дерево навыков. Это был пиздец. То что я сделал бы на GMS за час, я делал часов 80, наверное. А при повторе это заняло бы у меня часов 16 минимум. Всё работает через жопу не как задумано, документация хуёвая, примеры хуёвые и не работают. В итоге три часа ищешь как сделать элементарную функцию. Даже партиклы эти ебаные сделаны блядь через какой-то анус. Во всех нормальтных движках партиклы как партиклы, а здесь блядь какая-то супер-логика. Чтобы задать область генерации я должен создать объект и передать его как параметр. А я думал что я просто из списка могу выбрать. ХУЙ! А как настроить количество партиклов - да ваще херпроссыш. И так во всём.
Вот примерно такое я испытываю когда волею судьбы сталвикаюсь с говнодвижками и "нормальными IDE"