Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВІРТУАЛЬНА 3D ЕКСКУРСІЯ МІСТОМ.docx
Скачиваний:
12
Добавлен:
27.10.2018
Размер:
1 Мб
Скачать
☆

1.4 Постановка задачі

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

Також, потрібно забезпечити переміщення персонажів в тривимірному просторі, реалізувати переміщення, підплигування, синхронізувати анімацію рухів моделі.

Загалом, основними вимогами до розробляє мого програмного забезпечення є:

зрозумілий і зручний інтерфейс;

мінімізація потреби системних ресурсів, для роботи програми (особливо це стосується серверу);

наявність достатньої швидкодії програм для забезпечення інтерактивності;

присутність належного рівня графічних об’єктів, таких як тривимірні моделі, текстури для надання реалістичності;

підтримка графічного шрифту, для того щоб текстові повідомлення виводились у всіх користувачів, незалежно від їх активного шрифту.

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

Розділ 2 огляд і характеристика інструментарію та технологій

2.1 Огляд середовища програмування Blitz3d

Для розробки програмного забезпечення буде використано мова програмування Blitz3D, що належить до класу Basic-подібних мов. Ця мова ідеально підходить для швидкої розробки програм, що використовують тривимірну графіку та інше інтерактивне програмне забезпечення. Blitz3D дозволяє за досить короткий час реалізувати інтерактивну програму з підтримкою тривимірної графіки належного рівня.

Blitz3D забезпечує просте, але ефективне середовище для створення ігор, тому що він заснований на популярному і простому у використанні мові програмування BASIC.

Нижче наведена опис лише деяких з особливостей Blitz3D:

1) Супер гнучка система. Blitz3D будується навколо ідеї суб'єктів. Як правило, 3D-гра буде складатися з багатьох елементів, такими як камери, освітлення, сітки і так далі. У Blitz3D, всі ці вважаються об'єктами. Це означає, що ті ж команди можуть бути використані для маніпулювання і покликані вирішувати широкий спектр речей - наприклад, команда TurnEntity можуть бути використані для поворотів камери, світла, сітки, або навіть місцевості.

2) Сітка.

Бліц дозволяє створити свою власну сітку з нуля, або завантаження існуючої сітки з X, 3DS чи b3d форматів. Формат b3d є унікальним для Blitz3D, і був розроблений, щоб забезпечити всі можливості движка Blitz3D.

3) Terrains

Blitz3D місцевості можуть бути використані для отримання величезних сцен! Це досягається за рахунок LOD рівню деталізації в повністю автоматичному процесі роботи.

4) Sprites

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

5) Фотокамери

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

6) Світло

Blitz3D пропонує направлене світло. Можна керувати кольором, дальність і «конусум» світла з легкістю.

7) Супер гнучка система забарвлення

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

8) Мультитекстурування

Мультитекстурування дозволяє застосовувати до 8 шарів текстур об'єкту для досягнення таких ефектів, як lightmapping, детальне текстурування, відблиски і безліч інших. Мультитекстурування системи в Blitz3D також дозволяє точно контролювати, як текстури поєднуються разом.

9) Навколишнє середовище відображення

Навколишнє середовище відображення створює ілюзію відображень у сцені. Blitz3D передбачає 2 форми відображення навколишнього середовища - сферичної або кубічної. Кубічна середовище може оновлюватися в режимі реального часу, забезпечуючи Awesome, динамічні ефекти відображення.

Сам процес написання програми відбувається в спеціальному середовищі програмування, що має назву Visual Blitz. Воно є досить простим і зручним для користувача, є можливість детального налаштування інтерфейсу та компілятора. Зовнішній вигляд Visual Blitz зображено на рисунку.

Рисунок 2.1 – Зовнішній вигляд середовища розробки Visual Blitz

Для взаємодії серверної і клієнтської частин через мережу використовуються спеціальна бібліотека, що має назву k-netlib. Ця бібліотека дозволяє організувати взаємодію двома методами – Кліент/Сервер та Клієнт/Клієнт, про що свідчать опції з’єднання:

Const KNL_INI_ClientServer = 1 ; Client/Server interface.

Const KNL_INI_Peer2Peer = 2 ; Peer To Peer interface.

В основі роботи бібліотеки лежить компонент DirectX – DirectPlay. Як і в інших компонентах DirectX, програмування DirectPlay базується на використанні COM інтерфейсів. Цей підхід є дуже зручним, тому що всі дії, зроблені в процесі виконання програми, здійснюються через покажчики на певні інтерфейси. Так, наприклад, для кожної архітектури, будь то клієнт/клієнт або клієнт/сервер, існує головний інтерфейс, через покажчик на який і здійснюється робота додатка. Необхідно також відзначити й допоміжні інтерфейси, що грають важливу роль.

Для роботи програми спочатку треба запустити сервер. При запуску сервер завантажує базу даних зареєстрованих користувачів. Всі користувачі, що підключені до серверу відображаються в списку у вікні сервера.

Рисунок 2.2 – Зовнішній вигляд вікна сервера

Щоб додати нового користувача в базу даних сервера достатньо створити текстовий файл в директорії \Profiles\. Ім’я файлу являється ім’ям користувача в чаті. Вміст файлу може бути, наприклад, таким:

dima

12345

human1

s1human1

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

На стороні клієнта відбувається підключення до серверу. Для підключення потрібні певні дані для авторизації клієнта в базі сервера. Ці дані також зберігаються в текстовому файлі:

1024

768

127.0.0.1

dima

12345

Перші дві строки слугують для ініціалізації графічного режиму додатку. Друга – це ІР-адреса серверу. Третя – це ім’я користувача, а четверта – пароль доступу.

При підключені сервер перевіряє ці дані, якщо вони підходять, то клієнт отримує доступ до серверу, тобто входить в чат.

Після отримання доступу клієнтська програма будує інтерактивний простір, що складається з таких етапів:

  • завантаження ресурсів – моделі, текстури і т.д.;

  • побудова простору із моделей;

  • розміщення користувача в просторі;

  • створення і розміщення інших користувачів в просторі;

Всі дії, що виконує будь який користувач чату передаються на сервер, а потім із серверу передаються всім іншим користувачам чату. Напряму, від одного користувача до іншого нічого не передається – це являється основним правилом клієнт-серверної архітектури. Програма дозволяє такі інтерактивні дії користувачам чату3D:

  • переміщення (ходьба);

  • швидке переміщення (біг);

  • поворот

  • підплигування;

  • відправка текстових повідомлень.

Всі інші дії, що здійснює користувач на сервер не відправляються. Загалом архітектура побудована так, щоб якомога менше даних відправляти на сервер. Це по-перше економить трафік, а по-друге, збільшує швидкодію програми, як клієнтської так і серверної.

Після надходження інформації від користувача, сервер обробляє її, а потім відправляє всім іншим користувачам, щоб вони могли коректно взаємодіяти.