html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

War of Machines: создание игры для iOS

В этой статье я хочу поделиться с вами своим практическим опытом разработки игры для iOS на основе open-source компонентов. Мы пройдемся по техническим решениям, которые были приняты во время разработки игры.


Спецификация


Первым делом я сел делать спецификацию для игры. Решил, что не напишу и строчки кода, пока не будет готова спецификация. Конечно в ходе разработки она менялась, но не значительно. Спецификация очень помогла не отойти от первоначальной задумки. По спецификациям рекомендую почитать статьи Джоэл Спольски: http://www.joelonsoftware.com/articles/fog0000000036.html

Краткое описание игры


Одной из задумок игры было создать разнообразный геймплэй. Основной геймплэй представляет собой RTS:


А вот в бонусах юзеру предстоит пострелять в аркадном стиле и даже поучаствовать в поединках один на один:


За каждую стадию юзер получает нового юнита или новую способность. Первые стадии идут обучающие, а вот далее юзеру надо выстраивать свою стратегию, чтоб пройти уровень.

Графический движок


Изначально было принято решение писать игру на С++, так как уже были готовы ряд заготовок и не хотелось тратить время на изучение нового языка. А также не хотелось переходить c Visual Studio на XCode.
В качестве движка я рассматривал два варианта: Ogre3D и Irrlicht. Оба движка очень хороши. API у каждого движка понятный и разобраться с основными возможностями не составило труда. Irrlicht имеет меньшей размер, но ветка OGL-ES ещё не официальная. А вот у Ogre3D есть официальная ветка. Всё же выбор пал на Irrlicht, потому что проведённые тесты по скорости дали результат лучше, чем у Ogre3D.
Irrlicht предоставил мне следующий функционал:
• Рендеринг c OGL-ES.
• Загрузка моделей из файлов (я использовал формат DirectX)
• Билборды
• Анимированные модели
У Irrlicht есть свой XML парсер, но его использовать не рекомендую, потому что он мало функционален. Лучше использовать rapidxml или pugixml
Так же в архитектуре Irrlicht предусмотрена возможность дописывать расширения без изменения кода движка.

Скриптовый движок


Первый движок, который я рассмотрел был tiny-js. После ряда тестов выяснилось, что он слишком медленный и никак не подходит для мобильной игры.
Далее я начал рассматривать LUA и AngelScript. По скорости оба движка давали хорошие результаты. AngelScript имеет С-подобный синтаксис, а также возможность легко привязывать C++, что и сыграло основную роль в выборе скриптового движка.
Пример привязки новой функции выглядит следующим образом:
_engine->RegisterGlobalFunction("void MyFunc()", asFUNCTION(MyFunc), asCALL_CDECL);
void MyFunc()
{
// Do some work
}


AI



Архитектуру AI для своего проекта я выбрал «behavior tree». Данная архитектура позволяет создавать сложные системы поведения и не заботиться о всевозможных переходах из состояния в состояния. Упрощённый пример такой архитектуры:

Добавление нового поведения в данной архитектуре очень простое: достаточно добавить новое поведение в конкретный узел дерева и всё.
Более подробно о «behavior tree» можно узнать из статьи «Introduction to Behavior Trees».

Разработка


Весь код писался на Visual Studio. В Windows я использовал основную ветку Irrlicht, вместо тачев были клики мыши. Раз в неделю я компилировал текущую версию на XCode и тестировал на девайсе.
В ходе исправления утечек памяти очень сильно помогла библиотека VLD. Данная библиотека показывает информацию по утечки памяти с информацией о коде:


Результат


Небольшое видео того, что получилось:
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

7

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции