Cocos2d для Android поддерживает разные разрешения

Я пытаюсь создать игру и задаюсь вопросом, как можно поддерживать разные разрешения и размеры экрана. Для позиции спрайта я реализовал базовую функцию, которая устанавливает положение в соответствии с определенным соотношением, которое я получаю, получая ширину и высоту экрана из метода winSize от sharedDirector.

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

Я искал в Google и обнаружил, что Cocos2d-x поддерживает разные разрешения и размеры, но я обязан использовать только Cocos2d.

EDIT: Я немного смущен, так как это моя первая игра. Пожалуйста, укажите любые ошибки, которые я, возможно, сделал.

Хорошо, я наконец сделал это, получив дисплей устройства denitiy, как

getResources().getResources().getDisplayMetrics().densityDpi 

И на основе этого я умножаю коэффициент PTM на 0,75,1,1,5,2,0 для ldpi, mdpi, hdpi и xhdpi соответственно.

Я также меняю масштаб спрайтов. И для позиционирования я сохранил 320X480 в качестве базы, а затем умножил ее с соотношением моих текущих x и y в пикселях с базовыми пикселями.

EDIT: добавление кода для лучшего понимания:

 public class MainLayer extends CCLayer() { CGsize size; //this is where we hold the size of current display float scaleX,scaleY;//these are the ratios that we need to compute public MainLayer() { size = CCDirector.sharedDirector().winSize(); scaleX = size.width/480f;//assuming that all my assets are available for a 320X480(landscape) resolution; scaleY = size.height/320f; CCSprite somesprite = CCSprite.sprite("some.png"); //if you want to set scale without maintaining the aspect ratio of Sprite somesprite.setScaleX(scaleX); somesprite.setScaleY(scaleY); //to set position that is same for every resolution somesprite.setPosition(80f*scaleX,250f*scaleY);//these positions are according to 320X480 resolution. //if you want to maintain the aspect ratio Sprite then instead up above scale like this somesprite.setScale(aspect_Scale(somesprite,scaleX,scaleY)); } public float aspect_Scale(CCSprite sprite, float scaleX , float scaleY) { float sourcewidth = sprite.getContentSize().width; float sourceheight = sprite.getContentSize().height; float targetwidth = sourcewidth*scaleX; float targetheight = sourceheight*scaleY; float scalex = (float)targetwidth/sourcewidth; float scaley = (float)targetheight/sourceheight; return Math.min(scalex,scaley); } }