Как сделать игру скроллер
Как создать игру на стороне скроллер?
Я хочу, чтобы создать игру, где пользователь может перейти к самой правой части экрана, и если они идут дальше, они будут скользить в новый вид.
Таким образом, в принципе, если у них есть 3 монстров, преследующих их на экране # 1, и они идут весь путь направо и продолжайте идти, они войдут в экран # 2, где будет 5 новых монстров и новый рельеф местности.
Когда игра начинается, я должен инициализировать все монстры NPC и особенности местности для каждого экрана сразу же, или я должен инициализировать каждый экран, как они входят в это? А что это лучший формат / способ для хранения, что входит в каждый экран?
я должен инициализировать все монстры и NPC местности функции для каждого экрана сразу
Вы можете, конечно, там нет ничего не мешает вам делать это:
Однако это зависит от того, насколько велика ваша уровни и компромисс между временем загрузки и лаги во время игры (например, когда на следующий экран загрузки).
Я хотел бы предложить следующее:
Первый: Темы
Создание двух потоков , которые работают одновременно, одна из которых является repsonsible для реального игрового процесса, а другой , чья единственная обязанность заключается в том, чтобы загрузить новую местность. gameplay Нить является основным, и вызовет loader поток для загрузки новых данных о местности , когда игрок переходит к следующему экрану.
Во-вторых, уменьшение лагов между одной местности и другой
Избегайте загрузки следующей местности при входе его. То , что вы должны сделать вместо этого (для прокрутки), загрузите рельеф местность , что один слева, и загрузить на местность , что одна справа от текущей позиции. Таким образом , вы не нужно держать весь уровень в памяти сразу, и в то же время никогда не столкнуться с отставанием при входе в соседнюю местность . Это достаточно хорошо работает с первой точкой.
Это также прекрасно вписывается в с требованием наличия монстров NPC в одной местности, будучи в состоянии «следовать» вас к следующему местности (если вы не убили их); с той оговоркой, в том, что если игрок получает через два экрана подряд без монстров NPC получать через один, они не в состоянии Folow вас дальше; который, как многие из sidescrollers я играл по всей видимости, работать в любом случае.
Также обратите внимание, что это означает, что, что, когда вы начинаете уровень, вы должны будете загрузить 2 или 3 местности на один раз (в зависимости от начать ли вы на краю или в середине уровня), но в дальнейшем, вы будете только когда-либо чтобы загрузить одну местности в то время, потому что все, что вам нужно сделать, это поменять текущую с соседним каждый раз, когда игрок переходит к следующему местности
что это лучший формат / способ для хранения, что входит в каждый экран?
Сериализация
Учитывая , что выбранные платформы Java, я бы сказал , самое время загрузки эффективный способом сохраняющихся данных уровня является сериализацией. Сделать классы , которые хранят информацию о уровнях и объекта в в реализации Serializable интерфейса.
Если вы выбираете эту опцию, при создании уровней в первый раз, вы должны либо создать специальные методы, чтобы жестко закодировать intialisation каждого уровня, а затем сериализации их перед загрузкой на игру; или вы должны создать редактор уровней.
Этот параметр увеличивает ваше время загрузки значительно по сравнению с deserialising объектов, но более надежно, и и легко, как ад, чтобы сделать изменения. Это, вероятно, самый лучший вариант, если ваш уровень не очень сложно.
На самом деле, ничто не мешает вам делать комбинации обоих.
Простая двухмерная игрушка скроллер
Сегодня будем делать что-нибудь легкое. Что отлично подойдет начинающим, поскольку принцип игры простой, кода мало, несложно разобраться и редактировать. А именно, скроллер, где экран будет двигаться постоянно в одну сторону, конкретней говоря, снизу и вверх. Но на самом деле тут есть небольшая хитрость, сам экран никуда не движется, перемещаются сами объекты и таким образом создается иллюзия движения. Игровой процесс в следующим. Игрок управляет персонажем, который может двигаться только влево или вправо. Внизу в случайных местах появляются блоки и двигаются вверх. На самом верху смертельные шипы, поэтому игроку надо успевать прыгать с блока на блок, и спускаться вниз.
Создаем новый 2D проект и приступим. Для начала создадим управляющий скрипт, которой контролирует игровой процесс, генерирует блоки и прочее. Итак, скрипт Game, вешаем на пустой объект:
player – префаб персонажа.
gameSpeed – скорость с корой будут двигаться блоки.
block – префаб основного блока.
blockAlert – префаб блока-ловушки.
timeoutMin и timeoutMax – минимальное и соответственно максимальное, значение таймаута появления новых блоков.
offset – максимальное смещение по Х и стартовое по Y, для блоков.
gameOverMenu – менюшка, которая будет появятся после проигрыша.
Меню GameOver как минимум должно содержать две кнопки, для выхода из игры и рестарта текущей сцены. Делать конечно же будем с помощью UI объектов. Просто добавить пару Button и указать для них соответствующие функции, для кнопки выхода это Exit(), а для кнопки перезапуска это Restart(). Добавляем кнопкам новое событие, перетаскиваем в поле обработчика, объект со скриптом, и в списке выбираем функции:
После, собираем кнопки в группу и указываем получившиеся меню в скрипте.
Теперь соберем префаб персонажа. Добавим на спрайт Circle Collider 2D и скрипт Player:
Скрипт очень простой. Есть функция отражения по горизонтали, чтобы поворачивать “лицо” спрайта в нужную сторону. Отслеживается столкновение с треггером, для определения проигрыша. Кроме того, есть функция OnBecameInvisible, которая сработает если объект окажется за приделами экрана.
Создание блока. Здесь может быть одна проблема, дело в том что при использовании коллайдера боксового типа, наш персонаж будет цепляться за углы и края платформы. Поэтому мы воспользуемся возможностями движка Unity и сделаем блок следующим образом. Первое, добавляем на спрайт блока Box Collider 2D и ставим галочку Used by Effector и сразу добавим эффектор Platform Effector 2D с настройками по умолчанию:
Чем поможет эффектор? Он сделает так чтобы объекты не цеплялись за края блока и его углы, добавляет скольжение. Штука крайне удобная.
На блок вешаем скрипт Block:
Здесь обеспечивается движение блока. Плюс, кода игрок попадет на платформу, то он становится дочерним к ней, это нужно для того, чтобы дать возможность нормально двигаться игроку в пределах блока. И функцию уничтожения платформу, после того, как она пропадает из поля видимости.
Префаб блока-ловушки состоит также из выше приведенного скрипта и одного коллайдера в режиме триггера, тег объекта указываем Finish. Верхние шипы тоже делаются из триггера с таким-же тегом, но уже без скрипт разумеется, так как это статичный объект.
В целом, собственно и всё. Не смотря на простоту, при должном умении и некоторой фантазии, можно сделать неплохой скроллер. Добавить больше блоков, больше ловушек, бонусов, изменение скорости, игра на время и т.п. и т.д.
Как создать простую игру боковой скроллер
Я все еще довольно новичок в программировании игр и в любом учебном пособии, с которым я работал, и которое касается только игр с начальным экраном. Я хочу начать создавать свои собственные игры, но есть несколько вещей, которые мне еще нужно изучить. Одним из них является то, как создать игру с прокруткой. Например; Марио … Или ЛЮБОЙ тип игры, как это …
Может ли кто-нибудь дать мне небольшой пример, чтобы создать что-то подобное. Я не спрашиваю о каком-либо конкретном языке, потому что в настоящее время в школе я изучаю javascript, но я также знаю немного c ++ / java / processing / target-c. Так что любой из этих языков будет в порядке, и я, возможно, смогу реализовать его на любом другом …
Некоторое время я искал какую-то помощь с этим, но никогда не мог получить какую-либо помощь по этому вопросу.
Решение
Независимо от языка программирования, который вы выбираете, и от того, используете ли вы графику более высокого уровня или даже библиотеку игрового программирования, фундаментальная техника, которую вы должны изучить, — это создание иллюзии побочного движения. Как уже отмечалось, этого можно добиться, нарисовав аватар в центре экрана, а затем переместив изображение за ним. Это может быть достигнуто различными способами, такими как рендеринг и отсечение различных частей большего изображения или, если вы используете библиотеку графики / игр, включающую объекты камеры, динамически управляя частью, визуализируемой камерой.
Ваша цель здесь — научиться программированию игр, или вы просто изучаете программирование и кратко изучаете программирование игр? Если первое, то вам действительно стоит потратить время на изучение одной или нескольких технологий программирования игр. Я бы порекомендовал вам взглянуть на Unity, которую можно бесплатно скачать и попробовать. Язык сценариев, который использует Unity, по сути является javascript (вы также можете использовать C #), так что вы уже будете чувствовать себя комфортно. Пройдите несколько уроков, и вы сразу же приступите к работе.
Обратите внимание, что такие технологии, как Unity (и другие), позволяют создавать игровые объекты, которые перемещаются в двух- и трехмерном пространстве и визуализируются на основе одной или нескольких камер. Ваш фон (или местность в трехмерном мире) остается неизменным, что более точно отражает реальность, в которой мы живем. Поэтому на самом деле с помощью этих технологий умственно легче развиваться, чем притворяться с помощью иллюзорных техник.
Источники:
https://ru.coredump.biz/questions/1740465/how-to-create-a-side-scroller-game
https://null-code.ru/games/56-prostaya-dvuhmernaya-igrushka-skroller.html
https://web-answers.ru/c/kak-sozdat-prostuju-igru-bokovoj-skroller.html