Авторы: Иванов Алексей...

16
Авторы: Никитенко Евгений, Иванов Алексей, 11 класс, Москва Научный руководитель: И. Р. Дединский, МФТИ

Transcript of Авторы: Иванов Алексей...

Page 1: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Авторы:

Никитенко Евгений, Иванов Алексей,

11 класс, Москва

Научный руководитель:

И. Р. Дединский, МФТИ

Page 2: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Целью работы является создание воксельного трехмерного многопользовательского симулятора мира с возможностью генерации бесконечного ландшафта, а также его изменения сохранения. Особенности:

• Многопользовательский режим

• Бесконечный генерируемый мир

• Собственный графический движок

• Собственный движок освещения

• Сохранение мира со сжатием с помощью zlib

• Совместимость с OpenGL ES 2.0

• Работа на нескольких системах: Windows, Linuх

• Возможность локализации без пересборки проекта

• Собственная библиотека GUI

• Продвинутый механизм отладки с помощью лога

• Конвертер карт из формата Minecraft

Page 3: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Карта Chunk SubWorld Sector Blocks

• Карта делится на чанки, содержащие сгенерированные подмиры,

сжатые с помощью zlib.

• Каждый чанк хранится в отдельном файле.

• Клиент или сервер загружает подмиры из чанка, после чего он

может изменять их, отображать и т.д.

• У каждого подмира есть версия. С помощью нее сервер узнает,

нужно ли отправлять его клиенту.

• Подмир содержит сектора; сектора, не содержащие блоков,

в памяти не хранятся.

• Каждый сектор рисуется отдельно.

32x32 8 32x32x32

Block

ID типа

Light (клиент)

Солнечное освещение

Освещение от других

источников Attributes

Page 4: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Application

GUI

Client

World

Agent

Map Loader

World Generator

Chunk

Client SubWorld

Light Engine

Agent controller

Scene

Sky

Page 5: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Application

GUI

Server

World

World Generator

Chunk

SubWorld

Agent

Page 6: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

За координацию работы других компонентов клиента

отвечает загрузчик карты. Он работает в три потока,

образующих конвейер.

Первый поток

Отправляет серверу список нужных подмиров и их версии

Получает нужные подмиры

Получает информацию об изменении ландшафта агентами

Второй поток Просчитывает освещение

Третий поток Генерирует меш

Передает их в поток визуализатора для отправки

на видеокарту

Page 7: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

31 30 29 28 12 13 14

30 29 28 27 13 14 15

26 14 15 16

22 23 24 25 17

21 22 23 24 20 19 18

20 21 22 23 22 21 20 19

31 31 31 31 31 31 31 31 31 31

31 31 31 31 31 31 31 31 31 31

31 31 31 31 31 31 31 31

31 31 31 31 26

31 30 29 28 27

27 28 29 30 31 30 29 28 27

26 27 28 27 26

У каждого блока есть освещение (солнечное и от других источников).

Максимальная интенсивность − 31.

Значения интенсивности используются в шейдере для расчета освещения

блоков и других игровых объектов.

Опционально можно включить сглаживание освещения.

Точечный источник освещения Солнечное освещение

Здесь показано, как распространяется свет.

Page 8: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Скриншоты Отображение мира графическим движком (ночная сцена).

Page 9: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Отображение мира графическим движком (дневная сцена).

Page 10: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

1. Генерация ландшафта

• Ландафт - Трехмерный шум Перлина + интерполяция

• Пещеры – Simplex noise + интерполяция

2. Генерация деревьев

• Генерируем все подмиры, в которые входит дерево

• Сажаем дерево

• Выгружаем подмиры, не попавшие в зону видимости

Дерево

Область

видимости

− генерируемый подмир

Page 11: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Первое TCP-соединение

(Client − Server)

• Сообщение в чате

• Добавление/удаление блока от

клиента

• Изменение прав агента

• Телепортация

• Синхронизация игрового времени

• Добавление/удаление блоков

агентов

Второе TCP-соединение

(Map Loader − Server)

•Изменение положения агента (в

координатах подмиров)

•Передача подмиров клиенту

•Передача добавленных/удаленных

блоков клиенту

UDP-соединение

• Положение агентов

• Скорость агентов

Page 12: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

1. Рисование всех поверхностей блоков

2. Отсечение смежных стенок блоков

3. Использование массивов вершин для подмира

4. Использование Vertex Buffer Object (VBO)

5. Использование GLSL-шейдеров

6. Отсечение подмиров, не попавших в пирамиду видимости

Page 13: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

• Разработан воксельный графический движок.

• Разработан движок освещения.

• Разработана библиотека для работы со шрифтами.

• Разработан сетевой движок.

• Разработан мультиплатформенный воксельный симулятор мира

Размер проекта: более 32 тысяч строк кода, 0.8 Мбайт текста

Page 14: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

• Блоки сложной формы (лестницы, двери и т.п.)

• Более продвинутый генератор мира

• Звуки

• Тени (с помощью PSM – Perspective shadow mapping)

• Физика блоков (например, падение)

• Механизмы

• Портирование на iOS

• Поддержка модов

Page 15: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,
Page 16: Авторы: Иванов Алексей 11nas.ded32.ru/storage.ded32.ru/Materials/NikitenkoIvanov... · 2013. 4. 3. · •Блоки сложной формы (лестницы,

Проект находится в репозитории

bitbucket.org/jekanikitenko/blocksworld/commits/all

Презентация, статья и другие материалы скоро появятся на сайте

ded32.ru