Как получил комп скачал unity. Думал что начальная стадия осваивания программы дастся намного легче чем было когда-то давно, но нет, всё также. В течении недели смотрел гайды по unity, изучал c#, ну и пытался использовать знания на практике. В тоску это всё вгоняло в огромную, просыпаюсь - думаю о том что по приходу домой нужно будет продолжать изучение. Приходил домой, сидел до ночи, особо ничего не выходило, расстроенный ложился спать. И так по кругу.
Комментарий недоступен
Раз уж решил остаться на GMS, то вот парочка непрошенных советов :
1) в качестве IDE используй GMEdit от YellowAfterLife. В нем есть фичи, которых нет в IDE самого GMS. Самое очевидное и полезное - указание типов переменных и последующие подсказки автодополнения.
2) Если ещё не перешел, то переходи на последнюю версию GMS 2.3 и используй все новые фичи типа структур и классов, методов. Это поможет гораздо лучше структурировать код.
3) Наколхозь паттерн издатель & подписчики. Она сильно снизит паразитную связность в проекте и позволит легко и непренужденно менять его и расширять в дальнейшем.
Почему pub&sub важен? Ну, например, решил ты сделать, чтобы при ударе по противнику, у второго отнималось хп. Что обычно делается в таких случаях? В лучшем случае какой-нибудь скрипт hit_obj, в котором происходит уменьшение хп у цели. В худшем случае прям там на месте удара берем и отнимаем хп (и так для каждого объекта, наносящего урон. Поэтому этот способ худший)
В случае использования pub&sub, вместо создания скрипта урона, мы создаем событие урона. И вызываем его каждый раз при атаке. События должны поддерживать хранение переменных, в которые можно будет записать кто нанес урон, кто цель и сколько урона нанесено (и еще куча других параметров, если это так важно).
И самая прелесть, что это событие могут получить все, кто на него подпишется. Например, все противники (и игрок). Получив событие и если мы тот, по кому наносится урон, объект отнимает у себя хитпоинты. Почему это лучше?
Потому, что, в данном примере, если вдруг мы захотим расширить механику - допустим, добавив вампиризм (тот, кто нанес урон, восстанавливает себе хп 50% от нанесенного урона), то нужно будет только подписаться на это событие (если речь идет о противниках и игроке, то они уже подписаны) и если, вдруг, мы тот, кто нанес урон, то смотрим количество нанесенного урона и восстанавливаем себе хп. Причем система вампиризма может находиться в отдельном компоненте, который прикрепляется к персонажам (unity, привет).
В классическом варианте, пришлось бы наверное пойти в скрипт hit_obj и там прописать что-то типа "если у нас есть вампиризм, то восстанавливаем себе хп". А это совершенно излишняя связность.
Одновременно с этим, звуковая система может быть также подписана на это событие и при его получении, будет проигрывать звук попадания.
Еще может быть система эффектов, которая должна разбрызгивать кровь, как только получит это событие. И чтобы отключить эту самую кровь, нужно будет не бегать по всему коду и искать вызовы функции "пустить кровь", а просто зайти в контроллер эффектов и отписаться от события нанесения урона.
А еще система статистики уровня, которая подсчитывает количество нанесенных ударов игроком.
Куча всего, но никто ничего не знает друг о друге, а значит можно модифицировать и менять системы независимо друг о друга. Круто.
Все таки попробуй в юнити, а что тебе не понятно с#? Если что напиши мне, может помогу вкатится в начале
Юнити сам по себе слишком перегружен функциями для создания двумерной инди игры. Если я бы создавал ведьмака с кораванами, то да, юнити мне нужен. А так, gms 2 для моей задумки намного удобнее