Хобрук: Ваш путь к мастерству в программировании

Программирование игр для iPhone

Лучше всего программировать игру для iPhone на языке Objective C или C++.
На каком языке должна быть написана такая игра, как Flight Control?
В каком формате должна быть графика, чтобы правильно отображалась и быстро загружалась на iPhone ?

19.06.2010

Ответы:


1

Такие игры, как Flight Control, обычно пишутся на Objective-C с некоторыми вызовами C для OpenGL и других API C. Графика может быть сохранена в формате PNG или JPEG. Я бы не стал использовать C++, если только мне не нужно было использовать какой-то код C++ или если бы у меня не было разработчиков с хорошим знанием C++. По моему опыту, узкое место редко находится в самом языке, так что вы мало что выиграете, перейдя на C++.

19.06.2010
  • Не говоря уже о том, что вы найдете гораздо больше примеров кода для iPhone (как и для всех устройств Apple), написанных на Objective-C, чем на любом другом языке. 19.06.2010

  • 2

    Вы не можете избежать использования Objective-C или Objective-C++ из-за множества API, с которыми вам придется взаимодействовать. Используете ли вы также C++ для ядра своей игры, во многом зависит от опыта и сторонних инструментов, которые вы планируете использовать.

    Я написал свою игру в основном на C++, хотя единственный крупный сторонний компонент, который я использую Chipmunk Physics, написан на C. Это произошло главным образом потому, что я много лет программировал на C++, и мне с ним гораздо удобнее, чем с Objective-C. . У других, конечно, будут другие точки зрения, в зависимости от их опыта.

    Говоря более субъективно, я считаю C++ гораздо лучшим языком для написания пространственной игровой логики. Его способность представлять векторы, матрицы и т. д. в виде классов и перегружать их математическими операторами значительно упрощает работу. Также я считаю, что модель сохранения/выпуска в Objective-C — это королевская PITA по сравнению с RAII в C++. .

    ВРТ, изображения. Я нашел PNG вполне адекватным, хотя моя игра не перегружена текстурами. Эта страница содержит множество понимание эффективного хранения текстур на iPhone. Текстурные атласы особенно важны.

    19.06.2010
  • Интересный момент про управление памятью. Мне кажется ровно наоборот :) Подсчет ссылок показался мне очень удобным и безопасным, мне он очень нравится и довольно редко создаю утечку, потому что все кажется таким простым. 19.06.2010
  • @zoul: может быть, это просто мой недостаток опыта работы с Objective-C, но мне постоянно приходится отслеживать утечки и неизменно обнаруживать, что я забыл что-то выпустить, или сохранил это, когда не должен был, или нахожу что NSString был очищен раньше, чем я ожидал (даже после прочтения правил владения/жизненного цикла). 19.06.2010

  • 3

    Вам нужно будет сделать представления верхнего уровня и интерфейс операционной системы либо на Objective C, либо на Objective C++. Без него невозможно вызвать API Apple верхнего уровня.

    Как только вы доберетесь до логики игры, вы сможете выполнять большую часть своей работы на C, если хотите использовать Core Graphics или OpenGL.

    19.06.2010

    4

    Вы также можете посмотреть на бурундук (C) или Box2D (C++):

    Должен ли я пойти бурундук или Box2D?

    http://www.cocos2d-iphone.org/forum/topic/6841

    19.06.2010

    5

    Я ценю быстрый ответ и опыт каждого.

    Я нахожусь в процессе изучения C++ или Objective C, и похоже, что Objective C более ориентирован на iPhone.

    Мой фон - "задыхающийся" COBOL85 (среди других загадочных языков). Я бы предпочел, чтобы кто-то, уже свободно разбирающийся в приложениях для iPhone, кодировал игру, но я полагаю, что затраты на разработку сделают это немного непомерно высоким. У меня есть подготовленный запрос на ставку с "псевдокодом", если кто-то захочет его увидеть и дать расценки. Между тем, похоже, что у C++ нет преимуществ. Ken [email protected]

    19.06.2010
  • Ну, у C++ есть одно преимущество. Это больше кроссплатформенность. Если вы планируете разрабатывать свою игру для чего-то другого, кроме iPhone, вам нужно использовать Objective-C только для кода пользовательского интерфейса. 21.06.2010

  • 6

    Теперь вы можете ускорить разработку, используя язык, который не требует от вас, как от разработчика, ручного управления памятью и беспокойства об утечках, а именно C#. Появление MonoTouch — это волшебство, которое делает это возможным, но даже до MonoTouch я слышал инфраструктура Unity успешно использовалась для нескольких игр для iPhone.

    Хорошо, чтобы быть менее "коммерческим" (жесткая толпа...)

    Использование C# позволит вам относительно легко портировать вашу игру на другие мобильные платформы (например, Droid) без переписывания кода. Objective C вряд ли можно назвать языком, широко принятым за пределами сообщества Apple. AppStore все еще растет благодаря iPhone4 и iPad, но на Android нечего чихать, и кроме двух больших мобильных устройств есть и другие мобильные устройства, на которые стоит обратить внимание...

    См. этот связанный ответ относительно поддержки Android.

    Суть в том, что большая аудитория = больше дохода для вас при написании того же кода. Приношу извинения, если вы искали выбор между Objective C или C++, не раскрывая другой вариант...

    19.06.2010
  • Это похоже на рекламу. 19.06.2010
  • Возможно, Objective-C также обеспечивает автоматическое управление памятью. Это немного похоже на заглушку для C# без особой поддержки того, почему это лучший способ писать код для iPhone. 19.06.2010
  • Хотя MonoTouch довольно хорош, я думаю, что человек, задавший вопрос, хотел бы в какой-то степени остаться со стеком Apple. 19.06.2010
  • В настоящее время существует разногласие с соглашением разработчиков Apple iPhone, согласно которому приложения должны быть изначально написаны на C, C++ или Objective-C. И Unity, и MonoTouch в настоящее время находятся в горячих водах относительно того, будут ли приложения, разработанные этими продуктами, приняты Apple или будут запрещены в будущем. На данный момент аналогичный продукт RunRev получил официальный ответ от Джобса, запрещающий их использование. Unity и MonoTouch пока не получили ответа от Apple, но они считают, что с ними все в порядке. 21.06.2010
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..