Apple хмурится или запрещает кодирование для конкретного устройства? - PullRequest
2 голосов
/ 17 августа 2011

Короткий вопрос: Apple хмурится или полностью запрещает приложениям кодировать специально для устройства (не такая функция, как Retina или Compass, а реальное устройство). Вот контекст:

Я запускаю 3D-игру для iPhone / iPad, которая должна стать универсальным приложением. Я запрограммировал его интерфейс таким образом, чтобы один набор координат экрана идеально позиционировал 2D-спрайты на экране, сохраняя различия в соотношении сторон.

У меня сейчас проблемы с производительностью для первого поколения iPad. iPad 2, iPhone 3GS, iPhone 4 (и близнецы iPod) работают отлично (я тоже пока не поддерживаю сетчатку, производительность при этом слишком низкая).

Я нахожусь на грани перехода в "если iPad 1" занимаюсь этим типом кодирования. Я знаю, что это ужасная практика, но игра, которую я построил, слишком сильно давит на старое оборудование. Я изучаю еще больше методов оптимизации, чтобы помочь улучшить, но мне нужно получить дополнительные 20 FPS, что само собой разумеется.

Меня беспокоит следующее: если я не смогу улучшить производительность по всем направлениям настолько, чтобы игра играла на iPad 1 так же, как на iPad 2, я настоятельно рекомендую уменьшить размеры текстур только для iPad 1, и, возможно, даже удаляя или обрезая определенные объекты с помощью большего количества поли. Однако я не хочу, чтобы это стоило пользователям iPad 2, у которых есть устройство с графическим процессором, способным поддерживать скорость. Насколько я плох в этой ситуации?

Ответы [ 3 ]

3 голосов
/ 17 августа 2011

Я играл во многих играх, которые предлагают опцию в самом приложении, которая предоставляет возможность использования графики / текстур с высоким разрешением (специально для iPad 2). Я бы сказал, что Apple не только не одобрит такой подход, но, скорее всего, одобрит его, поскольку он дает вам возможность продемонстрировать лучшее из своих устройств.

Я бы посоветовал вам поддержать два новейших устройства каждого типа (iPhone 4, iPhone 3GS, iPad 2, iPad 1, соответствующие модели iPod Touch). Я лично думаю, что вы слишком много сокращаете рынок, если поддерживаете только последнюю версию каждого устройства.

Подобно тому, как дисплей Retina использует графику с высоким разрешением, я бы посоветовал найти самый простой путь к созданию более легких версий вашей игры и более сложных версий. Как вы заявили, предоставление текстур с более низким разрешением и моделей с более низким полигоном было бы одним из способов сделать это. Теперь, когда iPhone использует унифицированную систему памяти для текстур графического процессора, вы, вероятно, можете выбирать размеры текстур в зависимости от общего объема памяти, которую предлагает устройство. Если вы этого еще не сделали, возможно, вы захотите использовать форматы текстур PVRTC для текстур, которые не будут слишком распространены.

Хотя я против «предварительной оптимизации», если у вас возникают проблемы со скоростью, вы можете запустить приложение через профилировщик. Вы можете обнаружить, что в вашем коде есть единственное узкое место, которое вызывает больше проблем, чем вы изначально думали. Однако, если вы используете большие текстуры - я подозреваю, что вы заметите значительное увеличение скорости на старых устройствах, просто используя меньшие текстуры и модели с меньшим количеством вершин.

3 голосов
/ 17 августа 2011

Краткий ответ: Apple не нахмурится при таком кодировании.

Я немного обеспокоен тем, что вы не видите одинаковую производительность на оригинальном iPad и 3GS, поскольку у них очень похожее оборудование - и iPad на самом деле сильнее на бумаге.

Практика, которую вы описываете для использования другого набора текстур для iPad, не редкость - я знаю множество программистов на iOS и Android, и они тоже делают это, чтобы добиться максимальной производительности в своих приложениях, поэтому я сказал бы пойти на это!

Надеюсь, это помогло! :)

2 голосов
/ 17 августа 2011

Вы можете указать устройства, на которых будет работать ваша игра, когда вы загрузите ее в Apple Store. Apple не особенно заботится, работает ли она только для iPad 2, хотя предполагается, что она должна работать на максимально возможном количестве устройств.

Я бы постарался не придерживаться подхода if, поскольку когда-нибудь это станет кошмарным обслуживанием, я просто загрузил бы его и указал, что он работает только на iPad 2, конечно же, с ценойкак вы значительно сокращаете свой рынок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...