Автор оригинала: FreeCodeCamp Community Member.
Роберт Скалко
Таким образом, вы хотите попробовать и сделать игру, но немного запуганы? Не волнуйся, я тоже был!
Я боялся использовать объекты, например. Они были этой большой жуткой, которую я отложил на потом. Но теперь я использую их все время!
Я собираюсь прогуляться по всем шагам, которые я прошел, чтобы построить мою роль JavaScript играя в игру.
Вот моя игра работает на кодепене. (Обратите внимание, что он еще не оптимизирован для мобильных устройств):
Первый , Выберите точку своей игры. Это головоломка? RPG? Hack & Slash? Хорошо, теперь подумайте о технических трудностях сделать его. Игра головоломки потребуется много сложного JavaScript. Hack & Slash понадобится много тщательной балансировки и так далее.
Кроме того, решить, хотите ли вы, чтобы это было браузерную игру, мобильную игру или оба («родная веб-игра»).
Например, моя игра не может хорошо подходить на мобильном экране, потому что у игрока есть 24 заклинания. Это не удобно, щелкнув эти маленькие кнопки на крошечном экране, поэтому мне нужно было перепроектировать игру для мобильных устройств.
Второй , запишите Все Вещи, которые вам нужно программировать, чтобы на самом деле сделать игру. Для меня это было:
- система инвентаризации
- Генератор предмета
- Система статистика игрока
- система спасения
Третий Начните делать свою игру, решая эти проблемы один за другим.
Нужно помочь на самом деле создать игру?
Намного проще разбить вашу игру в небольшие задачи. Вы не делаете игру, вы делаете систему инвентаризации. Тогда вы делаете боевую систему. И так далее.
Если вы уже не добретесь на рисунке – или хотите провести месяцы или годы, получающие хорошее в нее – используйте эти инструменты для создания активов, которые сделают вашу игру хорошо:
- Game-icons.net – Эти значки веселые и легко цвета
- Открыть игровое искусство – Получить несколько отличных общественных доменных активов
- Массовое изменение размера фотографий – отличный инструмент для создания собственных крошечных иконок
- CSS Sprite Generator – помогает вам сделать CSS Spriteshets для ваших иконок
Проблемы, которые я столкнулся с ними и как я их решил
Спритье
Вы планируете иметь более 20 изображений в вашей игре? Если это так, вы не хотите делать 20 изображений с ссылками изображения на каждый. Возможно, вы не думаете, что 20 изображений так много, но если вы решите добавить еще 50? Вот где Спритешеты пригодиться. Поместите несколько изображений на них, скопируйте файл CSS в свой проект и просто добавьте класс в свой элемент, который соответствует вашему желаемому изображению.
Сохранение штата вашей игры
Вы хотите, чтобы ваша игра была сохранена? Ну, вы можете выбрать между использованием локальной таблички браузера и хранить вещи на сервере. Серверы требуют отнесенных знаний. Если у вас нет ничего, я предлагаю использовать LocalStorage. Он сохраняет игру до тех пор, пока пользователь не удалит его с помощью некоторых инструментов очистки. Вот как я это сделал:
По сути, сохраните все ваши данные в одном объекте, затем обновите свои элементы на нагрузке. Используйте JSON Stringify и разбирать его позже.
Модулизировать свой код
Выясните, какие части к жесткому коду и какие части модуляризации. Я ошибочно начал заклинания в жестком кодировании, которые быстро стали уродливыми. Мне нужно 24 из этих функций, а также 24 функция IFCRITAL.
Теперь вы можете спросить, как работает вторая заклинание? У меня есть функция PlayerAttack (), которая использует объект заклинаний, чтобы сделать вещи:
- Это сначала запускает функцию заклинаний обновлений, которая вызывает объект заклинаний. Затем заклинание принимает вашу текущую статистику и превращает их в ценности, такие как «урон» и «стоимость MANA».
- Он проверяет, является ли ущерб более чем 0. Если да, он ущерб для босса и отображает ущерб, который заклинал это, и сумма. Это делает это для большинства других ценностей. Вы можете подумать, что проверка большего нуля бесполезна, но вы снова подумаете, когда игра говорит, что вы сделали 0 урона и восстановленные 0 маны.
- Затем он запускает пользовательскую функцию, если заклинание имеет один. Это может быть использовано для того, чтобы дать специальные эффекты заклинаний, которые не могут через нашу основную функцию атаки.
Игровая петля
Для меня игровой цикл проверяет и обновляет вещи: статистика игрока, будь то игрок мертв, будь то, просто выровнялся ли игрок, будь то босс, и так далее.
Вам придется понять это один из себя. Я думаю, что это хороший опыт обучения. Подумайте о том, что и когда проверки и обновления должны работать. Например, с проверкой уровня я устанавливаю его, чтобы запускать каждые 20 секунд, поскольку выравнивание не так уж большая сделка.
Но тогда у меня также есть проверка смерти босса, которая проходит каждую секунду после начала битвы. Почему? Таким образом, игроки не нужно ждать 20 секунд для босса, чтобы умереть.
Некоторые другие вещи даже не нужно быть в петле. Функции могут быть просто вызваны, когда они необходимы. Например, функция заклинания обновлений обновления. Это называется только когда игрок использует заклинание.
Несколько вещей, которые я узнал:
- Объекты хорошие. Таким образом, когда вы должны сохранить данные, вам просто нужно сохранить объект – не 50 отдельных переменных.
- Всегда устанавливайте таймменты и интервалы в качестве переменных, поэтому их можно очистить позже – если они не являются постоянными последствиями, которые и вы уверены, что вам никогда не нужно их очистить.
- Один большой файл JavaScript может не быть мудрым идеей. Кодепен позволяет только один файл JavaScript, но в идеале вы должны отделить все в модули.
- Если вы не беспокоитесь о производительности, вы можете просто скопировать и вставить объект, когда он должен быть обновлен – нет необходимости обновлять половину значений индивидуально. Если объект огромен, вы даже можете сначала определить объект в виде переменной, такой как: VAR объект; а затем постройте его, используя некоторую другую функцию, когда вы хотите, чтобы она была обновлена. Я сделал это с моими заклинаниями. Каждый раз, когда проигрывает заклинание, функция UpdatesPell () сначала снова определяет объект заклинаний, рассчитывает весь ущерб и статистику, а затем стреляет заклинание.
Смешные вещи, которые я скомпрометировал:
- Навыки Mana стоит на нами босса, потому что если бы они были на уровне игрока, я бы наказал игроков за выравнивание. Это также сделало более высокие боссы намного сложнее, что мне понравилось.
- Элементы созданы со всеми характеристиками, но они не отображаются, если они равны 0. Таким образом, мне не нужно проверять undefined, и я могу избежать отображения статистики, если они генерируются как 0. Двойной победа!
- Я много упрощал баффы и дебафты. По сути, есть варианский буффстат, Nerfstat, TotalStat и Stat. Так что баффы или дебафты никогда не стекируют.
- С боссами Nerf STAT навык на самом деле не связан на 0. Это намного более изощренно, чем это. Это Nerfs статус на 9999999, затем проверяет, если это меньше 0. Если да, он устанавливает его на 0. Итак, если вам удается достичь уровня, в котором у вас есть статистика, которые находятся в миллиардах, мне может придеться добавить больше zeros.
Что все это подумало, что я должен планировать дальше дальше, даже если я просто создаю забавный проект, чтобы расширить свои собственные навыки.
Кроме того, у меня сейчас есть гораздо лучшее понимание того, как возникают ошибки: иногда вы не понимаете все краевые случаи, когда вещи могут сломать дорогу. И это когда баги кусаются.
Ошибки и эксплойты
Этот удивлен мне, и мне немного напугал. Я не мог поверить, что мой идеальный кусок артсодержащих жуков!
Хорошо, я немного преувеличиваю. Но я недооценивал чистое количество вещей, которые могут пойти не так, без меня, даже осознавая это.
Вот несколько ошибок и подвигов, которые обрезали, с верхней части головы:
- Вы можете изменить уровень босса во время босса, и поправляйся на добычах
- HP и Mana Bars будут когда-нибудь переполнить
- Вы можете атаковать босс до начала битвы. Поговорим о присоске Punch!
- Мана может пойти негатив, что помешало вам возможности выполнять даже основные атаки, что является основным способом восстановления вашей маны.
- Лечи временно повысили ваше максимальное здоровье.
- Одно заклинание на самом деле не было кликабели большую часть времени из-за проблемы CSS
- Атакующий, пока не в бою поставил свои заклинания на бесконечное перезарядку
Все эти звуки ужасают верно? В MMORPG эти вещи были бы оскорблены от первого дня и разрушают все!
Ну, хорошая новость заключается в том, что большинство из них легко фиксируема – обычно с менее чем 1 строкой кода.
Другие ошибки, хотя, требуют, чтобы я полностью переделал всю систему. С помощью системы заклинаний я пошел от необходимости писать 3 целых функций для каждого заклинания для нужды только небольшой объект, который занимает всего несколько секунд редактирования.
Опять же, вот моя игра, если вы хотите попробовать ее (обратите внимание, что она не оптимизирована для мобильных устройств):
И вот код (который также является открытым исходным кодом и редактируемым на кодепене):
ROBERTSKALKO/LOOT-RPG-V1.0 Loot-RPG-V1.0 – Убить боссов, получить добычу! github.com.
Имейте в виду, что я начинающий (всего 2 месяца в программировании), поэтому некоторые из моих решений могут быть улучшены. Надеюсь, я дал вам хотя бы основы, чтобы начать вас!
Получайте удовольствие от создания вашей игры JavaScript!