- PVSM.RU - https://www.pvsm.ru -
Итак, вы хотите попытаться создать игру, но немного ссы напуганы. Не волнуйтесь, я тоже сса был напуган.
Я боялся использовать объекты, например. Они были такой большой страшной вещью, которую я откладывал на потом. Но сейчас я использую их все время.
Я собираюсь показать вам все шаги, через которые я прошел, при создании моей ролевой игры в JavaScript.
Имейте в виду, что я новичок (всего 2 месяца в программировании), поэтому некоторые мои решения можно улучшить. Я же постараюсь дать вам основы, с которых можно начать.
Вот моя игра на CodePen [1] (замечу, что она еще не оптимизирована для мобильных устройств).
Во-первых, выберите цель вашей игры. Это пазл? РПГ? Hack&slash? Ладно, теперь подумайте о технических трудностях её создания. Игра-головоломка потребует много сложного кода JavaScript, Hack & slash требует острожное балансирование и так далее.
Также решите, хотите ли вы, чтобы это была браузерная игра, мобильная игра, или и то и другое.
Например, моя игра не может хорошо поместиться на экране мобильного телефона, поскольку у игрока есть 24 заклинания. Неудобно щелкать эти маленькие кнопки на маленьком экране, поэтому мне нужно будет переделать эту игру для мобильного телефона.
Во-вторых, запишите все, что вам нужно, чтобы на самом деле сделать игру. Для меня это было:
В-третьих, начните делать свою игру, решая эти проблемы одну за другой.
Гораздо легче разбить игру на мелкие задачи. Ты не делаешь игру, ты делаешь систему инвентаризации. Затем вы делаете боевую систему. И так далее.
За исключением тех случаев, когда вы сами хорошо рисуете или хотите тратить месяцы или годы, чтобы научиться рисовать, используйте эти инструменты, чтобы создать активы, которые позволят вашей игре выглядеть хорошо:
Вы планируете иметь больше чем 20 изображений в вашей игре? Если это так, вы не хотите, чтобы каждое из этих 20 изображений было связано с другим. Вы, возможно, не думаете, что 20 изображений это много, но что если вы решите добавить еще 50? Вот тогда вам пригодятся спрайт-листы: добавьте туда несколько фотографий, скопируйте CSS файл в ваш проект и просто добавьте класс в элемент, который соответствует желаемому изображению.
Вы хотите, чтобы ваша игра сохранялась? Вы можете выбрать между браузерным хранилищем и хранением вещей на сервере. Серверы требуют особых знаний. Если у вас их нет, я рекомендую использовать LocalStorage. Он сохраняет игру до тех пор, пока пользователь не удалит ее с помощью какого-нибудь инструмента по очистке. Вот как я это сделал:
По сути, сохраняйте все ваши данные в один объект, затем обновляйте свои предметы при загрузке. Используйте преобразование строк JSON и проанализируйте его позже.
Выясните, какую часть игры трудно кодировать, и какую часть кода стоит модулировать. Я по ошибке начал кодировать заклинания, которые пошли быстро. Мне нужны были 24 функции наряду с 24 функциями ifCritical.
Клянусь я не писал этого… Эээ меня заставили
У него даже есть функция, которая добавляет пользовательские функции
Теперь вы можете спросить, как работает второе заклинание? У меня есть функция playerAttack(), которая использует объект заклинания, чтобы проделывать разные вещи:
У меня игровой цикл проверяет и обновляет вещи: статистические данные игрока, когда игрок мертв, когда у игрока новый уровень, когда убит босс и т.д.
Вы должны понять это сами. Я думаю, что это хороший опыт. Подумайте, что и когда следует проверять и обновлять. Например, проверку уровня я установил на каждые 20 секунд, поскольку уровень не такая уж и важная вещь.
Но еще есть смерть босса. Её проверку я запускаю каждую секунду с момента начала битвы. Почему? Чтобы игроку не пришлось ждать 20 секунд пока босс умрет. Для некоторых вещей цикл даже не нужен. Функции просто можно вызывать тогда, когда они нужны. Возьмите, например, функцию заклинания. Она нужна только тогда, когда игрок использует заклинание.
Все это научило меня тому, что нужно планировать игру, немного забегая вперед, даже если я просто создаю забавный проект, чтобы расширить свои умения и навыки. Кроме того, теперь у меня есть гораздо лучшее понимание того, как возникают ошибки: иногда вы не осознаете все пограничные случаи, которые могут преградить вам дорогу. И вот тогда баги кусаются.
Это поразило меня и испугало немного. Я не мог поверить, что в моем безупречном творении есть баги.
Конечно, я немного утрирую. Но я недооценил количество вещей, которые могли пойти не так, даже если я этого не осознавал.
Вот несколько багов и эксплойтов, которые всплыли в памяти:
Все это звучит ужасно, не правда ли? В MMORPG, эти вещи с первого же дня все испортят! Ну, хорошей новостью является то, что большинство из них были легко поправимы — как правило, достаточно было написать менее одной строчки кода. Другие ошибки, однако, требовали, чтобы я полностью переделал всю систему. С системой заклинаний я пришел от написания целых трех функций для каждого заклинания до того, что мне нужно было описать всего лишь небольшой объект, который занимает всего несколько секунд редактирования.
Делайте свою игру на JavaScript и получайте удовольствие.
Автор: Edison
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/214116
Ссылки в тексте:
[1] Вот моя игра на CodePen: http://codepen.io/Treborx555/pen/bZXzpO
[2] Game-Icons.net: http://game-icons.net/
[3] Open Game Art : http://opengameart.org/
[4] Bulk Resize Photos: http://bulkresizephotos.com/
[5] CSS Sprite Generator: http://spritegen.website-performance.org/
[6] GitHub: https://github.com/RobertSkalko/LOOT-RPG-v1.0
[7] Источник: https://habrahabr.ru/post/316072/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.