AppGameKit Classic – один из немногих независимых движков со средой для упрощенной разработки.
Наряду с RPG Maker, создатели движка не только заваливают игроков многостраничной документацией, но и с гордостью могут указать на конкретные успешные проекты, некоторые из которых даже продаются в Steam или на торговых площадках для мобильных устройств.
Фактически, для понимания AppGameKit нужно две вещи: умение читать и знание основ учебного языка Basic. Для продвинутых игровых разработчиков пригодится знание C++.
Забрать AppGameKit Classic можно на странице в Steam
Акция кончится 5 октября 2020 года в 20 часов вечера по МСК.
8 доступных игровых движков, на которых можно сделать свою игру
Подборка игровых движков, которые сегодня доступны буквально каждому и помогут осуществить вашу мечту, о создании собственной игры.
Обзор сайта gamekit.com Что делать на нем и как получать бесплатный баланс для стима и не только!
Источник: coop-land.ru
Введение в GameplayKit: часть 1
Davis Allie Last updated Aug 24, 2015
Read Time: 10 min
This post is part of a series called An Introduction to GameplayKit.
Введение
Наряду со всеми новыми функциями и фреймворками в iOS 9 and OS X El Capitan, выпущенные в этом году, Apple также создала совершенно новый фреймворк для разработчиков игр GameplayKit. Благодаря существующим графическим API (SpriteKit, SceneKit и Metal), позволяющим создавать великолепные игры на iOS и OS X, Apple выпустила GameplayKit, чтобы упростить создание игр, которые хорошо работают. Этот фреймворк содержит много классов и функциональных возможностей, которые могут облегчать или усложнять стратегию вашей игры.
В этом уроке я расскажу вам о двух основных аспектах фреймворка GameplayKt:
- объекты и компоненты
- механика состояния
Предпосылки
Для этого урока вам потребуется, чтобы вы запустили работающую Xcode версии 7 в OS X Yosemite или более позднюю версию. Не требуется, но рекомендуется, чтобы у вас было физическое устройство, работающее под управлением iOS 9, так как вы получите гораздо лучшую производительность при тестировании игры на основе SpriteKit, используемой в этом учебнике.
1. Начало работы
Сначала вам нужно скачать стартовый проект для этой серии обучающих программ от GitHub. Как только вы это сделаете, откройте проект в Xcode и запустите его либо на iOS Simulator, либо на вашем устройстве.
Вы увидите, что это очень простая игра, в которой вы управляете синей точкой и перемещаете ее по карте. Когда вы сталкиваетесь с красной точкой, вы теряете два очка. Когда вы сталкиваетесь с зеленой точкой, вы получаете одно очко. Когда вы сталкиваетесь с желтой точкой, ваша точка замораживается на пару секунд.
What is Gamekit?
На данном этапе это очень простая игра, но на протяжении всей этой серии уроков и с помощью GameplayKit мы собираемся добавить больше функциональности и элементов в игровой процесс.
2. Объекты и компоненты
Первым важным аспектом новой структуры GameplayKit является концепция структурированиякода, основанная на объектах и компонентах. Она работает, позволяя разработчику писать общий код, который используется многими различными типами объектов в вашей игре, сохраняя при этом хорошо организованным и управляемым. Концепция объектов и компонентов предназначена для устранения общего подхода, основанного на наследовании, для совместного использования общей функциональности между типами объектов. Самый простой способ понять эту концепцию — это несколько примеров, которые помогут представить нам описанное:
Вы создаете игру в жанре Tower Defense с тремяосновными типами башен: огонь, лед, восстановление. Три типа башен будут обмениваться некоторыми общими данными, такие как здоровье, размер и сила. Ваши башни огня и льда должны быть способны атаковать наступающих врагов, чтобы стрелять, в то время как башня исцеления не способна это сделать. Все, что требуется вашей башне исцеления, — это отремонтировать другие башни в радиусе, когда они будут разбиты.
Учитывая основную модель игры, давайте посмотрим, как ваш код может быть организован с использованием структуры наследования:
- Родительский класс Tower , содержащий общие данные, такие как здоровье, размер и сила.
- Классы FireTower , IceTower и HealTower , которые наследуются от класса Tower .
- В классе HealTower у вас есть логика, отвечающая за исцеление ваших других башен в определенном радиусе.
Пока эта структура в порядке, но теперь возникает проблема, когда вам нужно реализовать возможности наведения на цель для башен огня и льда. Вы просто копируете и вставляете один и тот же код в классы FireTower и IceTower ? Если вам нужно внести какие-либо изменения, вам придется изменить свой код более чем в одном месте, это достаточно утомительно и потом приведет к большому количеству ошибок. Но, что произойдет, если вы захотите добавить новый тип башни. Вы будете в третий раз копировать и вставлять код?
Кажется, лучший способ разместить всю логику в родительский класс Tower . Это позволит вам иметь один экземпляр кода, который нужно редактировать только в одном месте. Однако добавление этого кода сделает класс Tower намного больше и сложнее, тогда, когда не все его подклассы нуждаются в этой функциональности. Если бы вы также хотите добавить дополнительный функционал между типами башни, ваш класс Tower постепенно станет еще больше, что затруднит работу.
Как вы видите, можно создать игровую модель, основанную на наследовании, но она может очень быстро и легко стать неорганизованной и сложной в управлении.
Теперь давайте посмотрим, как эта же игровая модель может быть структурирована с использованием объектов и компонентов:
- Мы создадим объекты FireTower , IceTower и HealTower . Можно создать больше объектов для любых типов башен, которые вы хотите добавить позже.
- Мы также создадим компонент BasicTower , который будет содержать показатели здоровья, размера, силы и т. д.
- Чтобы обработать процесс исцеления ваших башен в определенном радиусе, мы добавим компонент Healing .
- Компонент Targeting будет содержать код, необходимый для атаки на атакующих врагов.
Используя GameplayKit и эту структуру, вы сможете создать уникальный тип объекта для каждого вида башни в вашей игре. Для каждого отдельного объекта вы можете добавить нужные вам компоненты. Например:
- Каждый объект FireTower и IceTower будет иметь связанный с ним компонент BasicTower и Targeting .
- Ваш объект HealTower будет иметь оба компонента BasicTower , так и Healing .
Как вы видите, с использованием структуры на основе объектов и компонентов ваша игра теперь намного проще и универсальнее. Логика прицеливания должна быть написана только один раз и связана только с объектами, для которых она нужна. Аналогично, базовые данные о башне по-прежнему могут быть легко распределены между всеми вашими башнями, без необходимости добавлять дополнительные функции.
Еще одна замечательная вещь в этой структуре на основе объектов и компонентов заключается в том, что разные компоненты могут быть добавлены и удалены из объектов тогда, когда вы этого захотите. Например, если вы хотите, чтобы ваши башни исцеления отключались при определенных условиях, вы просто удаляете компоненты Healing из объекта до тех пор, покавы не добьетесь нужного результата. Или, если вы хотите, чтобы одна из ваших башен огня получила на время способность исцелять, вы можете просто добавить компонент Healing к объекту FireTower на некоторое время.
Теперь, когда мы разобрались с концепцией игровой модели на основе объектов и компонентов, давайте воссоздадим ее в нашей собственной игре. В инспекторе кода файлов Xcode найдите папку Entities в своем проекте. Для удобства у вас уже есть три класса структур, но теперь мы будем создавать новый объект с нуля.
Выберите File > New > File. /Файл> Создать> Файл . или нажмите Command-N, чтобы создать новый класс. Не забудьте выбрать Cocoa Touch Class из раздела iOS> Source. Назовите класс Player и сделайте его подклассом GKEntity .
Вы увидите, что сразу после открытия вашего нового файла Xcode отобразится ошибка. Чтобы исправить это, добавьте следующий оператор импорта ниже существующего оператора import UIKit :
import GameplayKit
Вернитесь к файлу PlayerNode.swift и добавьте следующие свойства к классу PlayerNode .
var entity = Player()
Затем перейдите в папку Components / Компоненты в вашем проекте Xcode и создайте новый класс такой же, как раньше. На этот раз назовите класс FlashingComponent и сделайте его подклассом GKComponent , как показано ниже.
Компонент, который вы только что создали, будет обрабатывать мигание нашей голубой точки, когда она будет сталкиваться с красной точкой и будет находиться в состоянии неуязвимости. Замените содержимое FlashingComponent.swift на следующее:
import UIKit
import SpriteKit
Источник: code.tutsplus.com