Pull to refresh

Comments 60

Не проще ли было портировать под AirplaySDK или переписать под Unity?

>прикручены вертекс буфера (VBO)

Зачем???
у iPhone shared memory и нет отдельной видео памяти. VBO прикручивай, не прикручивай, а результат будет одинаковый.
blackpixel.com/blog/399/iphone-vertex-buffer-object-performance/

Была цель разобраться — вот и разобрался.
Это возможно ничего не принесло но ничего и не унесло.
Вы про Airplay или VBO?
Тогда не совсем понимаю.

Вариант 1: Сделали отдельную тестовую апп, побаловались VBO, разобрались. И сделали это на платформе где они работают. При желании замерили производительность. Цель достигнута

Вариант 2: Добавили в программу код, который не нужен и фактически ничего не делает. Никак не влияет ни на производительность ни на что-либо другое.

Вы выбрали «вариант 2». Зачем?
Давайте будем считать что это был «Вариант 1» — с прицелом на то, что на каком то другом поколении устройств это будет давать преимущества
Вот будет человек код на андроид портировать, там ему VBO и поможет.
Кстати, AirplaySDK теперь называется Marmalade.
И цену они скинули до $500.
к чему это? это с ифона скриншот?
понимаете, тут такая фишка… выигрыш от VBO на iPhone не возможен даже теоретически. Так как там нет видеопамяти.
рекомендую к окулисту записаться.
рекомендую записаться к… даже незнаю кому.
ну говориш человеку — землю круглая, а он тебе «нет плоская, сам вижу».
почитайте доки от епл, форумы разработчиков, посмотрите код в опенсорс движках…
давайте почитаем.

developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html#//apple_ref/doc/uid/TP40008793-CH107-SW1

например: " Each time DrawModel is called, the index and vertex data are copied to OpenGL ES, and transferred to the graphics hardware. If the vertex data does not change between invocations, these unnecessary copies can impact performance. To avoid unnecessary copies, your application should store its vertex data in a vertex buffer object (VBO). Because OpenGL ES owns the vertex buffer object’s memory, can store the buffer in memory that is more accessible to the graphics hardware, or pre-process the data into the preferred format for the graphics hardware."

дальше продолжать?
Ну тогда советую вам обратится к окулисту. В статье говорилось про оптимизацию под старые девайсы. У которых Shared Memory и VBO просто и банально не работают.

Или у вас подход такой «пускай под медленным девайсом тормозит еще больше, зато там где работает хорошо мы еще больше отоптимизируем»?

Боюсь окончательно разрушить вашу неокрепшую психику, но на старых девайсах польза от VBO еще более заметна. Советую все же сходить на прием к окулисту, а потом внимательно, в очках, перечитать приведенный мной выше абзац.

бугага. наверное потому для старых девайсов в игровых движках VBO отлючают :) стоб тормозило сильнее. ага.

>http://www.cocos2d-iphone.org/forum/topic/15047
For normal rendering VBO's are about 5 % slower on older devices than vertex arrays.

>http://iphonedevelopment.blogspot.com/2009/07/to-vbo-or-not-to-vbo.html
>http://stackoverflow.com/questions/2761322/iphone-and-vertex-buffer-objects

а почитать собственные ссылки? или до похода к окулисту никак?

Well, I am not sure exactly what he was comparing but the main improvement is on the CPU side and unless the CPU is already being stressed, obviously it wont make any difference. In other words, any speed improvement will not show up itself unless your app is CPU limited ( which most 3G apps were once you were pushing more than 10-20 K vertices because of the copying of vertices around)

для всех остальных поясню — прежде чем попасть на GPU данные о вершинах проходят «предпродажную» подготовку (приводятся к нужному формату, выравниваются и т.п.). Этот процесс делается на CPU, соответственно, чем слабее CPU, тем больше выгода от VBO, в котором данные хранятся в нужном формате (в случае GL_STATIC_DRAW) и не требуют каких-либо телодвижений перед копированием на GPU.

И да, видеопамять на айфонах действительно общая с основной, но это не отменяет наличие кешей на GPU.
Спасибо за информацию.
Я сейчас пользуюсь AirPlaySDK (который недавно переименовали в Marmalade и, к сожалению, подняли цены) и он позволяет прямо из визуал студио создавать iOS, Android и другие версии аплцикации, т.е. фактически экономит создание всех описанных инструментов и покупку мака. Кстати, я думаю что даже при новой цене на лицензию, с учетом покупки мака, он все равно может окупиться.
1) У меня уже была игра и движок
2) Пару раз уже обжигался на сторонних движках
1) AirPlay — это не игровой движок, а низкоуровневая библиотека, которая изолирует от особенностей платформы и железа, а так же набор инструментов. Перенести готовый игровой движок на AirPlay достаточно легко. В одной из последний версий, у них даже появилась обертка с интерфейсом OpenGL, но которая скрывает особенности железа и реализации.

2.1) «Not invented here syndrom» — не есть хорошо, влечет за собой трату времени и велосипеды которые часто оказываются хуже стандартных решений.
2.2) С закрытыми библиотеками таки есть проблема, собственно я сейчас с AirPlay сейчас на это и налетел, с этой сменой лицензирования. Еще, ИМХО, важно чтоб у всех, включая коммерческих библиотеках, которыми вы пользуетесь — был соурскод. Очень неприятно за день до релиза наткнуться на чужой бак в закрытой либе или потратить неделю на отладку бага в чужом коде косвеным способом.
Маловато технических деталей. Например, та самая настройка Cygwin, которая в данном случае достаточно важный и интересный пункт. Так же совсем не понятно как был собран toolchain для сборки для девайса.
а какой sdk при toolchain-е используется?
может быть выложите образ cygwin-dir на торренты?
т.е. iPhone SDK 2.0 + MacOSX SDK 10.5?

хотелось бы sdk для iOS 4.0 :)
Да.
Под 4.0 пробовал — но ничего не получилось.
Найти в интернете тоже.
Кстати, я не могу сходу найти информацию о том, как в айфонах обстоят дела с floating point, но я в целях переносимости и производительности, использую Box2D с числами с фиксированной точкой.
Понятное дело, что работает. Вопрос в производительности. Физическая симуляция — это дофига работы на CPU, и если реализация плавающей точки в процессоре и компиляторе не очень — то это может оказаться узким местом.
Как я написал в статью с производительностью физики были проблемы на 2G но подтвикав физику и добавивши небольшое слоу-мо меня это устроило.
Слоу мо мне даже понравилось больше — так как я могу наблюдать куда/откуда вылетают неугодные мне обекты
Статья описывает насколько это хардкорно самому писать под айфон без использования готовых фреймворков. Опыт штука, конечно, классная, но в гейм деве, особенно под мобильные устройства, важна скорость разработки. Airplay SDK и другие окупаются полностью, экономить на этом не стоит.
Теперь это работает на меня.

1) Вторая игра уже на 90% закончена
2) Прототип третьей уже тоже почти готов
А можно как-то попробовать это приложеньице под виндой, люблю подобные игрушки, а Garry's Mod уже наскучил :)
Такие мысли у меня были.
Только при максимайзе будет видна пикселизация пользовательского интерфейса (он заточен под 320x480). Возможно как только закончу версию под айпад.
Ну и ладно, вон есть PowderToy он тоже в маленьком окошке и ничего ;)
На чем писалось? с++ или objective c?
Кроме шуток — перенесите в блог «Ненормальное программирование».
Что за бред. Когда это портирование виндоуз игры под мобильную платформу было «ненормальным программированием»?
Такое портирование — это ненормально.
Вообще, программирование в чужой для платформы среде — это, может, и интересный опыт, но очень странная история.
Why not? Левые SDK может и костыль но разрабатывать на другой платформе вполне нормальное решение, дешевле в конце концов.
За 3 дня продаж пока не окупилось.
Но процесс запустился? (окупки)
Да. Всё очень даже лучше чем я ожидал.
Пользуясь случаем хочу спросить — сейчас поставил macos x на виртуал бокс, качаю xcode. На ебее сейчас полно предложений по внесению udid в список разработчиков (для тестирования беты ios 5)
Можно ли после внесения udid устройства таким образом тестить самостоятельно написанные программы, не джейлбрейкая при этом девайс? Спасибо!
Нет, для тестирования нужен сертификат разработчика.
Спасибо. Эх, придется джейлбрейкнуть, чтобы сначала осмотреться что к чему)
UFO just landed and posted this here
Спасибо за наводку, погуглю.
Поиск по хабру в помощь — не так давно тут это расписывалось.
На симуляторе многое не проверишь… знаю по собственному опыту. Тормоза в сравнении с устройством — раз, нет мультитача — два, нет GPS-данных (т.е., они всегда одни и те же, указывают на офис эппла) — три, нет гироскопов и т.п. — четыре, и т.п… ИМХО, годится в основном для тестирования UI и малочй части логики. UX тестировать вообще нереально.
UFO just landed and posted this here
Sign up to leave a comment.

Articles