FAQ:
cocos2d для iPhone: Как быстро cocos2d (по сравнению с другими двигателями игры)? How fast is cocos2d (compared to other game engines)?Ищите мой cocos2d часто задаваемые вопросы iPhone & Обучающие программы
Пожалуйста, отметьте, что поиск блога в правом верхнем углу не ищет мои часто задаваемые вопросы и Обучающие программы.- Отметьте: пожалуйста, не разделяйте прямые ссылки для скачивания к файлам PDF, ссылки для скачивания истекают после пары минут!
Вопрос является слишком общим, чтобы быть отвеченным. Я понимаю понятие - если Вы собираетесь купить автомобиль, Вы хотите знать, как быстро оно может пойти. Но как с автомобилями, если Вы только ездите вокруг в городе, topspeed просто не имеет значения для Вас. But as with cars, if you only drive around in the city the topspeed simply doesn't matter to you.
Большинство начинающихся программистов игры только ездит вокруг города для обозримого будущего. Если кодекс, они продолжают работать, является медленным, это не почти никогда ошибка двигателя игры. Я видел много кодекса игры новичка или полупрофессионала. В почти всех случаях было только две проблемы, которые вызвали серьезные исполнительные проблемы: разработчик был любой сверхчестолюбив (обычно вместе с не пониманием ограничений платформы и узких мест), или кодекс не был просто написан со скоростью в памяти (обычно вместе с нехваткой понимания двигателя игры, языка программирования и платформы). I've seen a lot of beginner's or semi-professional's game code. In almost all cases there were only two issues that caused severe performance issues: the developer was either over-ambitious (usually coupled with not understanding the platform's limitations and bottlenecks) or the code was simply not written with speed in mind (usually coupled with a lack of understanding the game engine, programming language and platform).
Для почти всех разработчиков не имеет значения, как быстро cocos2d по сравнению с некоторым другим двигателем. Реальный вопрос должен быть: что это может сделать для Вас? Сколько времени это сэкономит Вас строящий Вашу игру? У этого есть редакторы игры? Действительно ли легко построить Пользовательские элементы Интерфейса как кнопки? Это делает это прямым и легким сотрудничать с другими? И так далее... они - вопросы, которые Вы должны задать прежде всего, оценивая двигатель игры. what can it do for you? How much time will it save you building your game? Does it have game editors? Is it easy to build User Interface elements like buttons? Does it make it straightforward and easy to collaborate with others? And so on ... these are the questions you need to ask first and foremost when evaluating a game engine.
В любом случае это - процесс обучения для всех нас. Если Вы волнуетесь о работе, начните простой. Я уверен, что Вы найдете cocos2d достаточно быстро для начала, и опытные программисты могут сделать замечательные вещи с ним и не ограничены вообще. Я думаю, что это говорит все это. I'm sure you'll find cocos2d fast enough to begin with, and experienced programmers can make wonderful things with it and aren't limited at all. I think that says it all.
Если Вы действительно хотите знать то, чего cocos2d может достигнуть при очень определенных обстоятельствах, тогда взглянули на cocos2d Промышленные испытания.
Примеры для сверхчестолюбивых целей
- рисунок 100 + большие Эльфы с многослойными parallaxing фонами плюс эффекты частицы и объекты физики и ожидание 60 fps
- использование слишком многих объектов игры, который заставляет простые петли вычислять миллионы пунктов каждая структура
- эмуляция shader эффекты в программном обеспечении, управляя памятью структуры каждая структура
PSP-3000 по этому изображению - только напоминание, что Вы не можете ожидать тот же самый уровень визуального качества и сложности на iPhone чем на PSP. Еще так или иначе. iPhone 3GS может приблизиться, и iPad может фактически быть выше - но большинство Ваших клиентов все еще управляет iPhone 1-ые и 2-ые устройства поколения! Попытайтесь сохранять свои ожидания на Нинтендо уровнем DS, и затем когда Вы получаете то выполнение хорошо, Вы можете всегда думать о добавлении большего количества визуальных положительных героев позже. The iPhone 3GS may come close and the iPad may actually be superior - but the majority of your customers is still running iPhone 1st and 2nd generation devices! Try to keep your expectations on a Nintendo DS level, and then when you get that performing well, you can always think about adding more visual goodies later on.
Примеры для кодекса, не написанного со скоростью в памяти
- каждый объект игры проверяет любой объект игры, если это ближе чем x к себе. С 1000 объектов это вызывает 1 000 * 1 000 = один миллион выполненных проверок. Лучшее решение состоит в том, чтобы пройти список всех 1000 объектов и выполнения проверки на оставлении 999 объектами, следующая петля только проверяет оставление 998 объектами и так далее. Это работает потому что, если A не близко к B, то B не может быть близко к A, таким образом, мы можем пропустить тех. См. псевдокодовый пример по изображению выше. The better solution is to go through the list of all 1000 objects and doing the check on the remaining 999 objects, the next loop only checks the remaining 998 objects, and so on. This works because if A isn't close to B, then B can't be close to A, so we can skip those. See the pseudocode example in the image above.
- рисование большого количества объектов вне экрана без некоторой простой проверки, чтобы потянуть только объекты, которые не находятся, по крайней мере, частично на экране
- перемещение многих объектов только маленькие расстояния, используя cocos2d Действия - это вызывает много alloc/dealloc циклов и может ослабить работу. Чтобы улучшить этот кодекс перемещают объекты вручную, вручную добавляя скорость каждая структура к положениям объекта. Один довольно эффективный способ сделать это должно использовать двигатель физики, чтобы иметь движение объектов на неподвижных скоростях в данном направлении. One rather effective way to do this is to use a physics engine to have objects move at fixed speeds in a given direction.









Просвещение почты. Спасибо!
И, конечно, у меня есть некоторые вопрос
- все относительно, но для общего кодекса лучше, чтобы использовать NSString, NSArray (и заплатить стоимость создания новых объектов) или изменчивые? Который может быть параметрами, чтобы выбрать между каждым?
- Я задаюсь вопросом, будет ли новый iPhone 4.0′s большая работа проблемой. Игры, которые управляют гладко в iPhone 1-ыми и 2-ыми устройствами поколения, будут, вероятно, бежать слишком быстро?
Привет Макс,
я сомневаюсь, что наборы данных NSMutable* - исполнительные убийцы. Я не сделал тестов, но я вполне уверен, что, если Вы не изменяете их вообще, они, вероятно, выступят столь же хороший как неизменчивые. Теперь, однажды Вы *do* должен изменить множества или последовательности, хорошо иметь их изменчивый так, чтобы материал заботился для Вас негласно. С другой стороны, если Вы знаете, что будете только создавать пункты однажды, но никогда переупорядочивать, удалять или добавлять, что другие тогда используют неизменчивые. Для меня это - вопрос случая использования, а не работы. Now, once you *do* need to change the arrays or strings it’s good to have them mutable so that stuff is taken care for you behind the scenes. On the other hand, if you know that you’ll only be creating the items once but never re-order, remove or add others then use the non-mutable ones. For me it’s a matter of use case rather than performance.
Игры не будут бежать быстрее на более новых устройствах. cocos2d’s CCDirector удостоверяется этого. Вы поправляетесь framerates, конечно, но не более быстрый геймплей. Это сохраняется для всех современных двигателей игры. You do get better framerates of course but not faster gameplay. That holds true for all modern game engines.