Индустрия видеоигр [7] |
Разработка игр [64] |
Гейм-дизайн и графика [11] |
Сторонние движки и конструкторы [1] |
Прочее [3] |
Уроки по Game Maker [3] |
Game Maker 8.1
Классика. Идеально подходит для создания простых 2D игр на PC. Требует активации. | |
Game Maker for Mac
Абсолютно та же программа, но только для пользователей Mac. Требует активации. | |
Game Maker Studio
Самая новая версия с возможностью кроссплатформенной разработки. Бесплатна. |
Агент Green | 4.2 / 5.0 |
FeDo | 4.2 / 5.0 |
To Mars: Sec... | 4.2 / 5.0 |
To Mars+MapE... | 3.9 / 5.0 |
Paintball | 3.8 / 5.0 |
Топ игр составлен путем пользовательского голосования.
Если вы не согласны с какой-либо оценкой, примите участие и поставьте свой балл игре. Ваша оценка очень важна для нас ;)
Главная » Статьи » Уроки по Game Maker |
7 советов по улучшению кода
Как я уже когда-то говорил, так уж сложилось, что комьюнити Game Maker в основном состоит из любителей, для которых создание игры на этом движке порой является первым опытом в программировании в целом. Поэтому при написании кода людьми часто допускается множество ошибок, которые в результате кочуют из исходника в исходник, от игродела к игроделу. Мне доводилось работать со множеством чужих исходников; да и самому писать кучу кода, в том числе плохого кода (даже по меркам GML), поэтому я бы хотел поделиться своим опытом и предостеречь начинающих программистов от распространенных ошибок. В этой статье приведены 7 советов по улучшению качества вашего кода (почему 7? Да потому что мне лень придумывать 11).
Соблюдайте стандарты оформления кода!GML – это, конечно, тот еще мутант. Но это не должно помешать вам соблюдать хотя бы основные стандарты оформления кода. Да-да, я говорю в первую очередь о табуляции. К сожалению, очень часто люди копи-пастят код из каких-нибудь уроков или исходников, а в процессе теряется форматирование кода. И в итоге получается какая-то лапша, равномерно распределенная по левому краю. Не надо так. Определенно, в GM8 не самый удобный редактор кода и имеет некоторые проблемы с табуляцией. Но вам ничего не стоит потратить минуту, чтобы вручную расставить табы! А в проектах на GMS и выше вообще должно быть стыдно не ставить табы, так как там редактор кода проапгрейжен и никак не препятствует нормальным отступам.
Выделяйте локальные переменные!Если для какого-то куска скрипта необходимо ввести новую переменную (например, итератор для цикла), не засоряйте память объекта и объявляйте переменную локально для скрипта.
Избегайте глобальных переменных!На самом деле порой удобно юзать глобальные переменные. Но если вы планируете в дальнейшем расширять свой код, лучше постарайтесь сократить их количество. Во всяком случае обычно переменные относятся к той или иной сущности. Так что не должно составить труда приютить их куда-нибудь в качестве локальной переменной. И никогда не используйте объявление через globalvar:[code]globalvar variable;[/code] Лучше инициализировать глобальную переменную так, чтобы в дальнейшем не было возможности случайно получить к ней доступ, без приписки global: [code]global.variable = 0;[/code] Дело в том, что такие переменные никак не подсвечиваются в редакторе, и с первого взгляда просто непонятно, является ли переменная глобальной или локальной, что усложняет чтение кода. Использовать их стоит только тогда, когда вы целенаправленно хотите, чтобы к ним никто не лез. В таком случае не помешает, например, поставить в имя нижнее подчеркивание (или даже два нижних подчеркивания) для уверенности в том, что никто случайно не заденет эту переменную: [code]globalvar __variable;[/code]
Не используйте цикл repeat!Вообще цикл repeat юзабелен, когда вам надо выполнить строго определенное количество действий без дополнительных условий и итераторов. Но такие ситуации встречаются не так часто. И обычно я вижу цикл repeat там, где должен быть for: // Лучше заменить на цикл for
(Если хотите) не ставьте нижнее подчеркивание!Я сам очень любил так делать, потому что это выглядит довольно красиво в контексте GML. Но когда приходится писать много кода, понимаешь, что постоянно ставить нижнее подчеркивание не очень удобно. Гораздо приятнее использовать названия в стиле Паскаля:
Не избегайте ООП!А теперь немного продвинутых советов. Несмотря на то, что в GML вроде как и есть объекты, реализовано ООП в нем ну очень криво. Для каждого объекта приходится выделять отдельный нод (который, в терминологии GML так и называется – объект), в коем уже понамешано довольно много часто абсолютно ненужной логики, замедляющей работу программы. Поэтому продвинутые пользователи ну очень боятся использовать лишние объекты в своей игре. И это приводит к плохому и неудобному коду. array[0] = item;[/code] Определенно, когда нам надо лишь только вывести на экран содержимое, такая реализация может даже показаться более лаконичной и предпочтительной. Однако, как только появляется дополнительная логика и необходимость расширения, начинается свистопляска, так как работать с десятком массивов строк и цифр не так уж и просто:
Используйте списки!Очень язык чесался написать об этом в предыдущем пункте. Но вынесу это сюда. В отличие от ООП, здесь никаких продвинутых знаний не требуется. Более подробно о списках я уже писал в предыдущей статье. Однако, чтобы вам не приходилось куда-то лезть, вот вам основные преимущества использования списков вместо массивов: [code] // Добавление строки в список // Перебор списка
| |
Просмотров: 1010 | Комментарии: 1 | Рейтинг: 5.0/3 |
Всего комментариев: 1 | |
| |