Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Львівська політехніка

Скачати 55.02 Kb.

Львівська політехніка




Скачати 55.02 Kb.
Дата конвертації16.03.2017
Розмір55.02 Kb.

УДК 004.4

Карпій Я.Я.

Національний університет "Львівська політехніка",

кафедра електронних обчислювальних машин


Платформа для побудови багатокористувацьких онлайн-ігор
© Карпій Я.Я. 2015
Розглянуто проблему реалізації програмної платформи для побудови багатокористувацьких комп’ютерних ігор, проаналізовано роботу ігрового рушія, мережевої частини, а також розглянуто структурну схему та алгоритм роботи платформи.

Ключові слова: ігровий рушій, MMOG, програмна платформа.
Platform for building multiplayer online games

© Karpii Ya.Ya. 2015

The problem of implementation of the program-platform for building of Massively Multiplayer Online Games was considered. Was analyzed work of the game engine, and the part of software for network cooperation, and considered the block diagram and algorithm platform.

Keyword: game engine, MMOG, program platform.

Вступ. Багато хто з нас захоплюється успіхами розробників популярних ігор та мріє створити власну гру. Але перед тим як почати її розробляти, необхідно визначитися з відповідною програмною платформою (ігровим рушієм), що поєднує в собі функціональність графічного рушія, звукового рушія, фізичного рушія і мережевий код[1-3].


Що стосується індустрії розробки ігор, то на даний час багатокористувацькі ігри - це найбільш швидкозростаючий і прибутковий сегмент ігрової індустрії. Всі ми чули про таких лідерів в цій області, як World of Warcraft, Lineage, Танки Онлайн. І хоча ММО ігор є дуже багато і вони дуже популярні, і Side scroller ігор (з видом збоку) є дуже багато, проте ігор які суміщають ці два принципи, зовсім небагато, і ще менше проміжного ПЗ для них існує. При розробці багатокористувацької гри, перш за все, необхідно визначитися з термінами. Всі багатокористувацькі гри можна розділити на Massive online гри і просто multiplayer гри. Різниця між ними досить умовна, і зводиться до кількості гравців. Технології, необхідні для написання Massive online і multiplayer ігор, також різні. Очевидно, що Massive online гри набагато складніше, ніж просто multiplayer гри. Обидва типи ігор в більшості випадків будуються за технологією клієнт-сервер.

Peer-to-peer в іграх використовується рідко. Сервером для Massive online ігор зазвичай є або виділений сервер, або кластер серверів, або навіть хмарні сервери. Сервером для multiplayer гри зазвичай є одна з машин гравців. Сервер створює сесію. Інші гравці просто під'єднуються до нього.

Так як в більшості випадків сервером для multiplayer гри є звичайна клієнтська машина, існує поняття виділеного (dedicated) сервера. Dedicated сервер - це звичайний сервер гри з обрізаним функціоналом [4-5].

Відтак в роботі розглянуто найоптимальнішу архітектуру платформи для побудови багатокористувацьких онлайн ігор, структурну схема та алгоритм роботи.


Стан проблеми. За останні роки сильно зросли кількість і складність платформ для побудови ігор. Розглянемо основні проблеми даних платформ. Перша проблема: відношення універсальності/шаблонності. З однієї сторони універсальність певної платформи дає волю фантазії розробника, і він за допомогою широкого функціоналу може втілити власні задуми. З іншої ж сторони, якщо потребується розробити продукт який не відрізняється певною унікальністю, то багато кращим варіантом є використання готового шаблону ігрових логіки механіки і т.п., наповнивши даний продукт унікальними мультимедійним контентом.

Друга проблема даних платформ – це якість ігрового рушія, а власне співвідношення якості графіки і насиченості ігрового процесу, до системних вимог. Гра повинна бути максимально оптимізована щоб бути працездатною на слабких комп’ютерах.

Ігровий рушій доволі складна програмна система, котра складається з десятків програмних модулів. Найменші помилки в архітектурі, можуть дорого коштувати в плані споживання ресурсів і працездатності взагалі[6-7].

Організація роботи гри по мережі, це окрема обширна задача, виконання якої залежить від жанру гри, протокол ТСР наприклад, має сенс бути використаний лише в покрокових іграх, через свою повільність, але можливість доставляти великі пакети даних. В той же час для онлайн ігор, де важливою є лише інформація про поточний стан систему краще використовувати UDP, при цьому потрібно вирішити які дані повинні передаватись, і визначитись з механізмами синхронізації ігрових об’єктів [1][6][9].


Постановка задачі. Розробити програмну платформу для побудови ігор для персональних комп’ютерів, на основі набору низькорівневих АРІ - DirectX, з мережевою складовою на основі клієнт-серверної архітектури, з використанням протоколу UDP. Розробити структурну схему, описати алгоритм роботи системи та схему реалізації.
Розв’язання задачі. Враховуючи особливості ігрового жанру для якого формується програмна платформа для створення ігрового рушія було вирішено використати набір АРІ функцій для роботи з графікою – DirectX. Що в зв’язці з мовою С++ дає виграш у швидкодії відносно такої популярної мови як Java, оскільки в ній відсутні стандартні інструменти для роботи з 3D графікою, а також можливість гнучкого управління пам'яттю[2][7][10].

Дана платформа складається з немалої кількості програмних модулів структурну схему даної платформи зображено на рис 1.



Рис 1. Структурна схема програмної платформи.

На стороні клієнтського додатку працює ігровий рушій, який включає в себе модулі для опрацювання звуку, ігрової фізики, обробки вводу з клавіатури, візуалізації ігрової сцени, та мережевої взаємодії. Мережевий модуль містить інтерфейс для мережевої взаємодії, та Менеджер ігрового процесу – модуль який займається розбиранням отриманих повідомлень, надсиланням відповідних інструкцій до ігрової сцени, а також формуванням даних які мають бути відправлені на сервер.

Серверний додаток в свою чергу вирішує чи приймати з’єднання, перевіряє наявність клієнта в БД, і в разі успіху, надсилає ігрову статистику на до клієнта. Вже в процесі гри сервер приймає він клієнта дані, поміщує їх в чергу для обробки в пулі потоків для обробки, і надсилає до всіх клієнтів відповідні повідомлення.

Для реалізації платформи для побудови багатокористувацьких онлайн-ігор розроблено алгоритм роботи клієнта, та сервера (рис 2, ліворуч і праворуч відповідно).

Рис. 2 Алгоритм роботи клієнтської і серверної частини платформи.


На клієнтському додатку, відбувається ініціалізація Directx, після цього коли користувачеві стає доступне ігрове меню, він за допомогою введення логіну і паролю, може пройти аутентифікацію на сервері. В разі успіху клієнт починає отримувати від сервера дані про стан ігрового світу, вносити потрібні корективи, прорисовувати сцену, і періодично відправляти на сервер інформацію про стан об’єктів локальної ігрової сцени. В разі завершення гри, додаток звільнює захоплені ресурси.

Для реалізації алгоритму розроблено спрощену діаграму класів (рис. 3).



Рис. 3 Діаграма класів клієнтської і серверної частини платформи.
Висновки. В роботі розроблено програмну платформу для побудови ігор для персональних комп’ютерів, на основі пакету DirectX, з мережевою складовою на основі клієнт-серверної архітектури, з використанням протоколfу UDP. Розроблено архітектурну схему, структурну схему та описано алгоритм роботи платформи
Література


    1. Sanjay Madhav, Game Programming Algorithms and Techniques 2013 – 352 c.

    2. Алексей Попов «Программирование графики на С++. DirectX 10», БХВ - Петербург, 2008 г.
    3. C++ Programming with Game Development, Alexander Harrison , Textbook Computer Engineering and Software Programming Tutorials, 2014. – 292 c.

    4. Multiplayer Game Programming: Architecting Networked Games (Game Design), Josh Glazer, Addison-Wesley Professional, 2015 – 300 c.

    5. Robert Nystrom, Game Programming Patterns, Genever Benning, 2014. – 354c.

    6. The Game Programming Starter Series, HobbyPRESS ,  CreateSpace Independent Publishing Platform, 2015 – 80 c.


    7. Jason Gregory , Game Engine Architecture, 2nd edition, A K Peters/CRC Press, 2014. -1018 с.

    8. Douglas E. Comer, Computer Networks and Internets, New Jersey, 2009.- 583 c.

    9. James Edwards “Networking Self-Teaching Guide: OSI, TCP/IP, LANs, MANs, WANs, Implementation, Management, and Maintenance Kindle Edition”, Wiley, 2015. – 791 c.

    10. PROGRAMMING: C++ Programming For Beginners, Scott Sanderson, 2015 – 228 c.


Скачати 55.02 Kb.

  • Ключові слова: ігровий рушій, MMOG, програмна платформа. Platform for building multiplayer online games
  • Keyword: game engine, MMOG, program platform.
  • C++ Programming with Game Development
  • Multiplayer Game Programming: Architecting Networked Games (Game Design)
  • Robert Nystrom