Движок Сonstuct2, або ООП в дії
За вікном пролітає пожовкле листя, ДІІТ у ранковому тумані… На годиннику вже більше, ніж восьма – студенти працюють над розробкою програм: дехто – процедурних, а от другий курс – об’єктно-орієнтованих. Проте для молодих людей, які лише вчаться, ООП річ непроста. І головне питання: для чого? Чому не процедурне програмування, просте та зрозуміле. Треба розібратися!

Трохи про ООП

Суть об’єктно-орієнтованого підходу полягає у тому, що програміст створює типи даних – класи, які описують деякі сутності, їх поведінку, операції над ними. Клас включає опис атрибутів (змінних) та методів (функцій). Екземпляри – об’єкти класу – мають однакові властивості-атрибути, але різні їх значення. Наприклад, клас “Кіт”, створений для опису реальної сутності – кота – може включати такі атрибути: ім’я, вік, вага, стать, порода. А от об’єкт, що відповідає, наприклад, сусідському коту, характеризується певними значеннями цих атрибутів: ім’я=”Борис”, вік=2, вага=7.5… Є ще статичні атрибути, вони мають однакове значення для всіх об’єктів: так у всіх котів чотири лапи та один хвіст (про сумні випадки не будемо…).
Та який з цього зиск? Як би це побачити не в буквах, а більш яскраво? Все просто: Constuct2 базується саме на засадах ООП (хоча можливо десь і не строго), а ще – дозволяє створювати ігри. Цікаво – так, корисно – звісно! Поєднаємо?!

Гейм-дизайн, або з чого починається тут робота

Для розробки ігор з GUI можна використати Constuct2 – безкоштовний графічний движок від Scirra. Кожна гра є проектом. В інтерфейсі Constuct2 проект відображається: ліворуч – властивості об’єкта або проекту; по-центру – карта рівня гри та листи для програмування; праворуч – склад проекту та перелік об’єктів.

Спочатку ми маємо лише біле полотно, та перетягуючи текстури, на які можна розжитися в мережі, ми створюємо світ гри. Текстури відображають усе: від ялинок на задньому фоні гри, до персонажу та його ворогів.

Текстури можна малювати і в самому Constuct2. Вони можуть буди представлені окремими графічними файлами та спрайтами (або таблицями спрайтів, як на малюнку вище), які розкадровують рух персонажу гри або іншу його дію, або просто зміну ландшафту в часі. Якщо є спрайт, то можна зробити анімацію дії, при цьому її якість буде залишити від кількості та ступеня деталізації кадрів.
Обмежень на жанр ігор не існує: platformer, tds, shooter, clicker etc. Є текстури – створюємо гру. Головну роль тут відіграють дві речі: зовнішній вигляд та логіка (про це трохи згодом).

Об’єкти та їх копії
Як раніше було зазначено, текстури потрапляють у проект простим перетягуванням (з вікна провідника до вікна движку). Перетягнуті текстури стають об’єктами, а це значить що у них є атрибути, які тут називаються властивостями: розмір, кут руху, позиція (координати) тощо. А ще ми можемо додати нові атрибути, при цьому вони стають статичними. Наприклад, HP для гравця-стрільця чи ворога-зомбі або score, щоб рахувати у платформері скільки «Маріо» зібрав монеток.
Для об’єкту може бути задана поведінка – це вже реалізований певний алгоритм. Наприклад, якщо в нас гра жанру tds, то було б добре, щоб наш персонаж був завжди у фокусі камери гри, а ще – щоб ходив у різні напрями, а керувати ним можна було за допомогою клавіатури. Програмувати це не потрібне, просто переходимо у вікно об’єктів та додаємо поведінки (клацнувши правою кнопкою миші), як показано нижче.

Об’єкти можна копіювати. Навіщо? Ну, наприклад, коли у tds чи shooter потрібно багато ворогів, їх можна не створювати поодинці, а копіювати. Те саме з ландшафтними текстурами. Та слід пам’ятати, що всі копії об’єкта – мають однакові значення статичних атрибутів (які ми самі додали та яким надали початкове значення) і однакову поведінку. Так, якщо у грі є вороги-зомбі, які створені шляхом копіювання, то всі вони ведуть себе однаково. Наприклад, вони всі будуть переслідувати персонажа гравця. Зомбі можуть мати однаковий рівень здоров’я (HP, який ми визначимо – статичний атрибут), але різні позиції (значення «звичайних» атрибутів).
«Об’єкт» в Constuct2 включає в себе атрибути та поведінку. Однак те, що тут зветься об’єктом, більше схоже на клас в ООП. А от «копії» – це класичні об’єкт. Але принцип інкапсуляції працює (так-так, саме те страшне слово з ООП, що ви чули на лекціях з програмування).

А де логіка?
Коли все намальовано і розкладено по полицям, можна програмувати логіку гри. Якщо ми не зовсім володіємо мовами програмування або зовсім не володіємо, або ж у нас банальний брак часу, то візуально-подієве програмування знову приходить на поміч. Все просто: подія – дія. Наприклад, нижче приведено «код», що дозволяє персонажу наводити приціл та стріляти за допомогою миші. При цьому якщо влучимо в ящик, він буде знищений, а якщо у стіну – знищиться патрон. А ще цей код виводить кількість ворогів і прибирає звичний курсор.

Так багато всього вмістилося у п’ять подій.
Події можуть бути визначеними для «Системи» – об’єкта, що відповідає за рівень гри в цілому; а також для об’єктів-текстур та для об’єктів інтерфейсу: миші, клавіатури, touch... (взагалі там можна багато чого додати). Подія визначає коли треба щось робити, а дія – що саме робити. Ми просто обираємо їх з переліку, який доволі великий, та ще й розширюваний. А алгоритми виконання – то вже справа не наша, тут про все піклується движок.

От і виявили, що розказують на лекціях дійсно корисні речі, життєздатні. А написати свою гру – легко – ТиЖПрограміст ;)

// Олена Куроп'ятник
Размещено: 29 октября 2017
НОВОСТИ И СОБЫТИЯ
Какие важные события произошли, что интересного ожидается. Будьте в курсе, участвуйте, делитесь впечатлениями!
Факультет Техническая кибернетика на Facebook
Присоединяйтесь к нам на Facebook!
Ой, что было – и как!
Один из главных участников действа, будучи очень открытым человеком, время от времени говорил о деталях вечера и активно обсуждал «3Х3=50». Уши и глаза я, конечно, тоже не закрывала, и по материалам вк и обрывкам разговоров – по всему этому можно было судить и о масштабе, и о структуре и участниках, и о сложностях подготовки. Когда я шла на вечер, то знала чуть (или не чуть) больше, чем обычный зритель… Я уже предвкушала НЕЧТО! Местечко в зале наша компашка выбрала себе зачетное, если не сказать лучшее, и вот наконец-то начало… Что было потом – нечто невероятное! В целом, да и, пожалуй, в деталях вечер удался! Ну, а теперь начнем с начала. 31 мая 2016 года стало особенным днем для…
Шанс - 2017
7 декабря прошел концерт "Шанс-2017" - самое масштабное по подготовке и проведению событие ДИИТа.
49000 Днепр, Украина
улица Лазаряна 2, ДИИТ
Телефон деканата: +38 (056) 373-15-52
Кибер Академия
Факультет «Техническая кибернетика» ДИИТа
Так ли часто мы говорим по душам, в особенности, если велика разница в возрасте?

А ведь это важно и необходимо: если общение идет на равных, то младшим и старшим наверняка есть, чем поделиться друг с другом.

Наш клуб задуман именно как место для подобного общения. Между преподавателями и студентами в первую очередь - но не только.
© 1965-2018 ФАКУЛЬТЕТ «ТЕХНИЧЕСКАЯ КИБЕРНЕТИКА» ДИИТа