поддержка Cocos2d-iphone для iPhone 4 с высоким разрешением - PullRequest
4 голосов
/ 20 июля 2010

Я пытаюсь создать относительно простую игру с 2D-графикой, которая имеет несколько сложных анимаций. Я пытался разработать игру с использованием базовых библиотек Core Graphics и Core Animation, но производительность анимации игровых объектов неудовлетворительная (т. Е. Отрывистая / задержанная).

Итак, я сейчас смотрю на Cocos2D, который выглядел очень многообещающе, пока я не проверил поддержку высокого разрешения для iPhone 4. Это, похоже, не очень хорошо работает, но опять же, я только начал посмотрите на это.

Единственное, что документация говорит о проблеме, так это просто используйте CCDirector для установки масштабного коэффициента, что можно сделать так:

if( [[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
    [[CCDirector sharedDirector] setContentScaleFactor: [[UIScreen mainScreen] scale] ];
}

Однако это не дает ожидаемого поведения. Он просто удваивает количество пикселей для работы, что означает, что я должен учитывать «коэффициент двойных пикселей» во всем моем коде.

В библиотеках Core Graphics / Animation координатное пространство, с которым мы работаем, не изменяется. За занавесками он просто удваивает все, чтобы заполнить экран iPhone 4 с высоким разрешением, и использует изображения @ 2x, где это возможно. Это на самом деле работает очень хорошо, и игровая логика не должна принимать во внимание разрешение устройства. Cocos2D, кажется, реализовал это довольно плохо, из-за чего я не хочу идти на борт поезда Cocos2D.

Я нашел несколько других тем на эту тему, но не было реальных ответов, которые не включали бы обходные пути. Это исправлено? Я делаю это неправильно или Cocos2D просто не в высоком разрешении? Есть ли альтернативы Cocos2D, которые могут дать мне то, что мне нужно?

Ответы [ 3 ]

3 голосов
/ 22 июля 2010

Извините за бесстыдную саморекламу, но, думаю, она может вам помочь. Недавно я написал два небольших сообщения в высоком разрешении в cocos2d и разместил их на нашем сайте.

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

Кроме того, есть второй пост, в котором подробно рассматриваются различия между точками и пикселями. UIKit полностью основан на точках, поэтому вам не нужно переделывать все ваши координаты. В отличие от UIKit, cocos2d работает на основе пикселей и поэтому зависит от разрешения. Вы можете предоставить cocos2d средства для работы с точками, а не с пикселями с помощью довольно простых преобразований. Я реализовал их как категории для CCDirector и CCNode, чтобы с ними было легко работать. Очевидно, что методы в этих категориях - не единственные, которые следует «указывать». Например, указание размеров в CCLabel или любых позициях в CCMoveBy основано на пикселях и, следовательно, должно быть переработано ...

Загляните в блог по адресу: http://apptech.next -munich.com / (я бы прямо связался со статьями, но как новый пользователь я могу опубликовать только одну ссылку в ответ ).

Надеюсь, это поможет и поможет вам начать!

1 голос
/ 15 августа 2010

Я нахожусь в процессе выяснения довольно простого решения этого.Мой прогресс опубликован здесь: http://www.cocos2d -iphone.org / forum / topic / 8511 # post-50361

В основном вы масштабируете свои текстовые исходные тексты в CCSprite, но больше ничего,Таким образом, вы используете ту же систему координат 320x480 (она же система баллов), но вы получаете графику с высоким разрешением.

Вы должны совместить мою технику с этим пунктом 2 из блога Бенджамина здесь, чтобы не было проблем с памятью: http://apptech.next -munich.com / 2010/07 / high-res-с использованием cocos2d-на-КСН-4.html

0 голосов
/ 20 июля 2010

Cocos2D использует UIImage методы imageWithContentsOfFile: и initWithContentsOfFile:, которые, несмотря на то, что говорится в документации, неправильно возвращают @ 2x версии изображений на iPhone 4.

Это известная ошибка, и, видимо, Apple работает над ней.

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

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