Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Общий вопрос о том как сделать бродилку. (http://www.flasher.ru/forum/showthread.php?t=178133)

Feigi 16.04.2012 04:23

Общий вопрос о том как сделать бродилку.
 
Извиняюся заранее, если вопрос не по теме (такой же вопрос был бы и в других языках). Делаю игру бродилку в стиле Марио. Уровень в игре не длинный (+- как в Марио). Как посоветуете выставить препятствие на фон? Есть 3 идеи: вырисовывать все препятствия сразу + их физика и просто двигать всё это вдоль экрана (но такое решение может загрузить игру). 2 идея: вырисовывать всё сразу, но физику включать по мере приближения к герою и отключать по мере отдаления. (кажется, что решение неплохое для маленькой игры). Либо 3 решение- вырисовывать по частям, в зависимости от нахождения героя. У кого есть опыт в этом вопросе- прошу совета.

Deimos747 16.04.2012 11:16

Уровень разделяется на блоки примерно равные ширине экрана и отрисовываются по мере необходимости.

saikspaik 16.04.2012 11:56

Это называется платформер.
Я три года назад делал платформер, еще на AS2. Делал кусками, по размеру экрана, и добавлял/удалял когда нужно, думал так будет быстрее.
Для второй части понадобился редактор уровней, и я сделал один длинный уровень без разбития на части - все работало так же быстро, а геморроя меньше.

Feigi 16.04.2012 13:16

Именно платформер имела ввиду. Спасибо за совет. То что меньше гемороя уверенна.

Котяра 16.04.2012 14:52

посмотрите на flashpunk или flixel там есть туториалы по созданию платформеров на этих движках.

saikspaik 16.04.2012 16:45

Плюсую flashpunk и flixel, на них значительно быстрее можно сделать платформер.

Feigi 16.04.2012 17:20

Согласна, что flashpunk очень облегчает задачу и там есть всякие прикольности. Весь пойнт был написать игру самой. Использую box2d для физики.

MikroAcse 16.04.2012 17:30

А мне больше нравится CitrusEngine.
Он ужасно легкий :)

anmelegov 17.04.2012 11:46

отрисовать весь уровень сразу всеравно не выйдет, ограничение на размер битмапдаты не позволит, я советую скролить фон вот так http://plasticsturgeon.com/2010/11/s...-huge-bitmaps/ ... а "картинки" динамических объектов добавляйте через addChildAt(texture, numChildren)

saikspaik 17.04.2012 13:06

Цитата:

Сообщение от anmelegov (Сообщение 1075409)
отрисовать весь уровень сразу всеравно не выйдет

Выйдет.

anmelegov 17.04.2012 14:14

Цитата:

Сообщение от saikspaik (Сообщение 1075422)
Выйдет.

максимальная ширина битмэпдаты 8,191 пикселей это слишком мало для платформера, да и я бы, например, в такой тормозящий отстой играть не стал бы

Inet_PC 17.04.2012 14:20

Цитата:

максимальная ширина битмэпдаты 8,191 пикселей
Если не ошибаюсь, то в 11 флешплеере сняли ограничение на размер bitmapData.

anmelegov 17.04.2012 15:00

Цитата:

Сообщение от Inet_PC (Сообщение 1075424)
Если не ошибаюсь, то в 11 флешплеере сняли ограничение на размер bitmapData.

всё правильно, но когда пишешь игры, надо думать об обратной совместимости, особенно если ориентируешься на мобильные платформы

saikspaik 17.04.2012 15:59

anmelegov
Во первых, в марио все уровни кроме одного, меньше 4000 px, даже если умножить на 2, все поместится в 8000 px.
Во вторых, кроме битмапдаты, есть и другие способы собрать уровень, особенно если использовать box2d.
В третьих, колдовать с кусками - вот где "тормозящий отстой".
И в четвертых - при чем тут мобильные платформы вообще?

Aquahawk 17.04.2012 16:39

Цитата:

особенно если использовать box2d.
а как связано использование box2d и размеры графического мира? И как физдвижок поможет отрисовать длинный мир?

StudentPSTU 17.04.2012 19:07

Feigi, я думаю вам пригодится этот блог xitri.com/, много полезного наглядно по вашему вопросу.

anmelegov 18.04.2012 12:31

Цитата:

Сообщение от saikspaik (Сообщение 1075440)
anmelegov
Во первых, в марио все уровни кроме одного, меньше 4000 px, даже если умножить на 2, все поместится в 8000 px.
Во вторых, кроме битмапдаты, есть и другие способы собрать уровень, особенно если использовать box2d.
В третьих, колдовать с кусками - вот где "тормозящий отстой".
И в четвертых - при чем тут мобильные платформы вообще?

а как вы разместите в памяти длинный уровень не прибегая к кускам? с помощью физического движка?

saikspaik 18.04.2012 13:28

Цитата:

а как вы разместите в памяти длинный уровень не прибегая к кускам?
Код AS3:

addChild(level);

Попробуй, это не сложно.

Feigi 18.04.2012 13:38

Сегодня выстроила один уровень в 20000 пикселей для проверки со всей физикой (с использованием box2d). Всё в одном спрайте. Работает замечательно. Не знаю насчёт мобильных, но если буду писать, то либо на Java либо на С. Но на старом слабом PC со слабенькой видеокартой (REDION 9250)+ Pentium4 1G памяти- работает замечательно.

saikspaik 18.04.2012 14:23

Цитата:

Сообщение от Feigi (Сообщение 1075640)
Сегодня выстроила один уровень в 20000 пикселей для проверки со всей физикой (с использованием box2d). Всё в одном спрайте. Работает замечательно.

Что и требовалось доказать :)

Feigi 18.04.2012 14:47

Цитата:

Сообщение от anmelegov (Сообщение 1075409)
я советую скролить фон вот так http://plasticsturgeon.com/2010/11/s...-huge-bitmaps/

anmelegov, интересная статья! Спасибо.

Wolsh 18.04.2012 15:07

И еще раз замечу на эту ссылку: для игры updateAfterEvent() каждые 3 мс это апокалипсис и полный фриз.
Вы понимаете смысл решения по ссылке?
Автор пытается заставить флэшплеер делать 333 кадра в секунду (обновлять экран 333 раза в секунду).
Я думаю он и сам не понимает, что делает.
В результате ему удается отображать картинку с максимально доступным фпс.
Но это не игра, это простое смещение одной картинки (её отображения), ради которого происходит насильственная перерисовка экрана флэшплеера, то есть касаться это будет не только фончика с облачками, а всей игры. Считать быстрее флэшплеер от этого не станет.

anmelegov 18.04.2012 15:30

Цитата:

Сообщение от Wolsh (Сообщение 1075661)
И еще раз замечу на эту ссылку: для игры updateAfterEvent() каждые 3 мс это апокалипсис и полный фриз.
Вы понимаете смысл решения по ссылке?
Автор пытается заставить флэшплеер делать 333 кадра в секунду (обновлять экран 333 раза в секунду).
Я думаю он и сам не понимает, что делает.
В результате ему удается отображать картинку с максимально доступным фпс.
Но это не игра, это простое смещение одной картинки (её отображения), ради которого происходит насильственная перерисовка экрана флэшплеера, то есть касаться это будет не только фончика с облачками, а всей игры. Считать быстрее флэшплеер от этого не станет.

не обязательно делать точно так же как в статье

dsQuadro 18.04.2012 18:27

Цитата:

updateAfterEvent() каждые 3 мс
не важно как часто вызывать updateAfterEvent, он работает не чаше 50 раз в секунду, поэтому все остальные вычисления будут просто проходить в пустую и никак не отображаться...
ЗЫ: это не в защиту автора, а к тому, что это просто безсмысленно, но не апокалипсис...

Wolsh 18.04.2012 19:21

Цитата:

не обязательно делать точно так же как в статье
Тогда к чему это?

Цитата:

не важно как часто вызывать updateAfterEvent, он работает не чаше 50 раз в секунду
я далек от мысли, что ФП будет долбить 333 фпс:
Цитата:

В результате ему удается отображать картинку с максимально доступным фпс.
Вопрос не в цифре (у меня кстати 52-56)), а в том что в игре есть еще и логика, требующая ресурсов, и изображение несколько сложнее чем статическая пачка пикселей.


Часовой пояс GMT +4, время: 21:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.