live13 (live13) wrote,
live13
live13

Category:

Про 2D платформеры. Хорошие, плохие. И про то что никто не знает как их делать

Захотелось мне недавно разобраться с тем, как работают классические 2D платформеры. Полез в гугл. Нашел кучу ссылок. Дальше будут сами ссылки. Возможно с комментариями. Кому интересно - пользуйтесь пожалуйста. А так я этот пост больше для себя пишу. Чтобы потом заново ссылки не искать. Если у кого есть что дополнить - буду признателен.





К сожалению большинство создателей платформеров, особенно современных "как бы ретро" довольствуются малым. Персонаж у них - просто прямоугольник, который может стоять на других прямоугольниках даже самым своим краешком. Уровни при этом часто представляют собой регулярную сетку прямоугольников, равных по размерам персонажу. Но ведь правильные платформеры - это Mario, Sonic, Contra и т.д. И там все гораздо сложнее.

Вот здесь на прквый взгляд все толково написано, а результат ватный. Ну неприятно персонажем с таким движением играть.

http://katyscode.wordpress.com/2013/01/18/2d-platform-games-collision-detection-for-dummies/

Самое сложно в хорошем платформере не обработка кнопок или расчет начального ускорения прыжка и гравитации. Самое сложное - это правильная обрабокта коллизий. Вот еще одина ссылка с описанием проблемы

http://www.wildbunny.co.uk/blog/2011/12/14/how-to-make-a-2d-platform-game-part-2-collision-detection/

В хорошем платформере персонраж не описывается простым прямоугольником. Достаточно поиграть в уже упомянутых Mario или Sonic чтобы это понять. У персонаже должна быть нижняя, чтобы определять где он стоит. При этом если его центральная нижняя точка не стоит на платформе, то персонаж начинает падать или начинать балансировать на краю пропасти как Sonic. Голова у персоанжа обычно не больша и широкая, а описывается одной точкой. Достаточно посмотреть на Mario в старых играх на NES. Если его макушка не встречает препятствия - его прыжок не останавливается, даже если он слегка зашел под блок. Более того, он сдвигается по оси X, чтобы не застрять в препятствии. Подобный подход описан в этой старой статье. Жалко что очень размыто и неточно.

http://games.greggman.com/game/programming_m_c__kids/

Общие соображения конечно тоже полезны. Но не более того.

http://subtractivedesign.blogspot.com/2013/02/making-platforming-games.html

Вот статья хорошая. Но всетаки не хватает деталей, в которых и кроется дьявол.

http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/

Здесь человек похоже хорошо разобрался в проблеме. Жаль использовал java. И демка слишком простая чтобы оценить насколько хорошо и правильно получилось

http://www.java-gaming.org/index.php?topic=26953.0

Здесь как-то опять все слишком просто

http://www.parallelrealities.co.uk/2011/10/intermediate-game-tutorial-4-tile-based.html

Здесь не про платформеры, зато очень понятно про организацию игрового цикла в платформерах. Потомоу что использовать там обработчик типа update (dt), зависящий от времени - чистое самоубийство. В хорошем платформере времен 8 и 16 битных консолей нужно оперировать одинаковыми временными промежутками. Подстраивать под них анимацию, размеры объектов. И даже скорости и расстояния измерять лучше целочисленными числами.

http://www.sacredsoftware.net/tutorials/Animation/TimeBasedAnimation.xhtml

Вообще современный подход, когда персонажа отдают во власть физического движка наподобие Box2d, а сам уровень описывают с помощью solid объектов в том же движке - самый порочный. Потмоу что чтобы заставить "правильную физику" работать адекватно и не допускать смертельных багов типа подскоков, подергиваний и проваливания сквозь пол, нужно написать столько хаков, что проще написать нормальную физпику для платформера. Впрочем создателей многочисленных кака бы платформеров для IOS и Android это не останавливает. Там ведь и управления нормального нет за отсутствием кнопок. Так что писать добротный платформер - всеравно что разбрасывать бисер перед свиньями. Порты старых игр типа Metal slug не в счет. Это ведь порты. И неавжно что играть в них на мобильных устрйствах невозможно.

В большой подборке ссылкой нашлось кое что и про платформеры. Но не слишком много.

http://gamedev.tutsplus.com/articles/roundups/fantastic-gamedev-tutorials-from-across-the-web/

Больше всего ссылок здесь

http://koboldkit.com/2013/08/indie-roll-guides-making-2d-platformer-games/

Многие я и сам нашел. Но кое-что полезное все равно есть.

Вот так вот. Сссылок много. Статей много. А толкового описания нигде нет. На русском языке вообще не нашел ничего путного.

Вот еще. Но не слишком полезно.
http://www.explodingrabbit.com/forum/entries/l%C3%B6ve-platform-game-programming-tutorial-01.669/

А вот достаточно толковое описание. Хоть и про Flash
http://tonypa.pri.ee/tbw/start.html

И вот еще одно обстоятельное описание
http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/
Tags: consoles, programming, игры
Subscribe

  • Про Некромунду

    Тут на подходе книга про Орлоков ожидается. А еще занимательный аванпост в пластике выпускают. Стоит даже несколько штук взять. Жаль пока не…

  • Самоизоляция

    Крашу понемногу на самоизоляции. Правда последние недели две замедлился. А вначале вообще разогнался. А ваши как дела? Следом за подкреплением…

  • Рубиновая сфера 2019 (часть 3)

    Часть 2 Так до сих пор и не успел запостить последнюю часть. А завтра снова на работу. Ну да ладно. Как я уже писал раньше бронетехника…

promo live13 may 11, 2014 17:58 46
Buy for 50 tokens
Примерно неделю назад я писал, что заинтересовался этой online-книжкой http://gameprogrammingpatterns.com/ и решил сделать ее перевод. Сам я мог бы ограничиться и английским вариантом, но думаю многим перевод пригодится. В прошлом я уже занимался переводом книг. Не как основной работой. Так,…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments