Этого треда уже нет.
Это копия, сохраненная 13 марта 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Это копия, сохраненная 13 марта 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вроде на дваче полно вебмакак, а треда по фазеру я не наблюдаю...
Короче годная библиотека, можно даже онлайн игру запилить в легкую, вот как раз решил сделать РПГ игрулю с генерируемым миром, поделил все на чанки, сделал тестовую модель персонажа и думаю как реализовать систему выгрузки чанков. Пока сделал генерацию чанков в виде объектов и складываю в здоровенный массив, в чанках хранятся все данные тайтлов(координаты и ключ территории)
Можно заценить вот здесь https://lolodin.github.io/My2DGame/
Буду рад если у кто нибудь поделится своими гайдами по созданию игрового мира на чанках
Короче годная библиотека, можно даже онлайн игру запилить в легкую, вот как раз решил сделать РПГ игрулю с генерируемым миром, поделил все на чанки, сделал тестовую модель персонажа и думаю как реализовать систему выгрузки чанков. Пока сделал генерацию чанков в виде объектов и складываю в здоровенный массив, в чанках хранятся все данные тайтлов(координаты и ключ территории)
Можно заценить вот здесь https://lolodin.github.io/My2DGame/
Буду рад если у кто нибудь поделится своими гайдами по созданию игрового мира на чанках
1 Кб, 206x221
>>591214 (OP)
Первое и самое главное - объектные пулы. Без них будет тормозить.
Из этого следует, что все чанки должны быть одного типа, чтобы храниться в пуле, офк.
Далее ЛОДы. Нужно на практике (экспериментально) определить границы уровней детализации. Неважно, 2д-канва у тебя или 3д-проекция. Допустим ты определил три уровня: ближайший, второго плана, третьего плана и окружение. Окружение - синглтон. Существует всегда и видимо всегда. Третий план загружается статично. Второй план к статике подгружает движение. Первый план подгружает интерфейс (взаимодействие игрока с собой). В ближайшем находится сам игрок, здесь уместно загружать хайрез-текстуры, для разглядывания игроком.
Далее, на примере 2д-топдауна. Ближайший план это один чанк. Вокруг него 8 чанков первого плана, которые уже загружены и готовы к бесшовному переходу игрока в них. Далее 16 чанков второго плана, готовые загрузиться до конца при приближении игрока. Далее 24 чанка третьего плана, готовы начать загружаться. И совсем вдалеке статическая текстура, возможно с анимацией, но не участвующая в динамической загрузке.
Таким образом получаем размер объектного пула 24+16+8+1 = 49 плюс ещё 1 на всякий случай = 50 чанков.
Допустим, тебя не устроило, что второй план слишком мал и игроку бросается в глаза статичный третий план. Тогда ты расширяешь второй план до двух рядов, он становится 24+16 = 40, а третий план становится 32 чанка и общий размер объектного пула у тебя будет 32+40+8+1+1= 82 чанка.
>кто нибудь поделится своими гайдами по созданию игрового мира на чанках
Первое и самое главное - объектные пулы. Без них будет тормозить.
Из этого следует, что все чанки должны быть одного типа, чтобы храниться в пуле, офк.
Далее ЛОДы. Нужно на практике (экспериментально) определить границы уровней детализации. Неважно, 2д-канва у тебя или 3д-проекция. Допустим ты определил три уровня: ближайший, второго плана, третьего плана и окружение. Окружение - синглтон. Существует всегда и видимо всегда. Третий план загружается статично. Второй план к статике подгружает движение. Первый план подгружает интерфейс (взаимодействие игрока с собой). В ближайшем находится сам игрок, здесь уместно загружать хайрез-текстуры, для разглядывания игроком.
Далее, на примере 2д-топдауна. Ближайший план это один чанк. Вокруг него 8 чанков первого плана, которые уже загружены и готовы к бесшовному переходу игрока в них. Далее 16 чанков второго плана, готовые загрузиться до конца при приближении игрока. Далее 24 чанка третьего плана, готовы начать загружаться. И совсем вдалеке статическая текстура, возможно с анимацией, но не участвующая в динамической загрузке.
Таким образом получаем размер объектного пула 24+16+8+1 = 49 плюс ещё 1 на всякий случай = 50 чанков.
Допустим, тебя не устроило, что второй план слишком мал и игроку бросается в глаза статичный третий план. Тогда ты расширяешь второй план до двух рядов, он становится 24+16 = 40, а третий план становится 32 чанка и общий размер объектного пула у тебя будет 32+40+8+1+1= 82 чанка.
>>591234
Есть примеры кода, бро, а так годно расписал, сам думал об этом
> Вокруг него 8 чанков первого плана, которые уже загружены и готовы к бесшовному переходу игрока в них
Есть примеры кода, бро, а так годно расписал, сам думал об этом
Вообще у топдаун чанков много реализаций, самый простой и распространенный это каждый раз генерить на основе сида, берешь координаты там и другую залупу, но это лишает нас возможности сохранять мир, если он изменяемый, поэтому я создал массив, в котором храню объект чанк, имеющий свой ID в виде двухмерного массива[1,1], и хранящий координаты каждого тайтла. Сегодня попробую реализовать чанки второго плана, идеи уже есть как сделать правильно. Но еще хочу рефакторинг кода сделать, у js проблемы с классами, но писать такие простыни на 1к строчек это пздц
Короче сделал загрузку и выгрузку чанков, но появился неприятный баг, при выходе в минусовые координаты появляются пустые зоны, на второй гифке видно. Как сделаю фикс, приступлю к созданию игровых объектов, добавлю деревья, которые будут расти и распространяться по игровой карте
...
18,3 Мб, 450x296
Все, баги убраны, приступаю к созданию игровых объектов
16,3 Мб, 540x350
Запилил деревья, теперь реализую функционал их роста и распространения в игровом мире
4,3 Мб, mp4,
518x346, 0:43
518x346, 0:43
Теперь деревья захватывают территории, нужно все отладить и довести до ума. Зачем можно перейти к самому геймплею
>>591214 (OP)
Могу тебе книгу дать phaser III game prototyping честносто купил, там много полезного ну или сам скачай
Могу тебе книгу дать phaser III game prototyping честносто купил, там много полезного ну или сам скачай
>>593914
Чет адекватных ресурсов с этой книгой не нашел, кидай в тележку
@Heman0 или на почтуgolefq2m28 ANUSgmJ9mail PUNCTUMcoR6lm
Чет адекватных ресурсов с этой книгой не нашел, кидай в тележку
@Heman0 или на почту
>>593927
Короче чекнул книжку, ничего существенно полезного там нет, ну как минимум не нашел для себя ничего
Короче чекнул книжку, ничего существенно полезного там нет, ну как минимум не нашел для себя ничего
Короче, сначала нужно удобную структуру сделать для сущностей, иначе заебетесь с кодингом, два дня убил на переделывание классов, но я просто не совсем ветеран ООП
>>594441
Нет
Нет
>>594485
Да дохуя, генерация события, генерация боевой сетки, парметров, алгоритмы поиска пути и логики ИИ
Да дохуя, генерация события, генерация боевой сетки, парметров, алгоритмы поиска пути и логики ИИ
>>594493
Изич. Делаем список событий, достаём из него рандомом.
Изич. Задаём шаг рисуем линии. Поверх линий рисуем преграды. Что сложного-то?
Ну изич же. Добавляем в списки из п.1. приоритет и актуальность и получаем типичного быдлодвачера: хотеть фап-фап - идти в порнхаб, хотеть трал-трал - идти в гд, хотеть девелоп-девелоп - идти в... нее, есть более приоритетные задачи: пожрать, посрать, покурить. Мамка ввалилась в комнату и требует найти работу - включить режим кабанчика!
> генерация события
Изич. Делаем список событий, достаём из него рандомом.
> генерация боевой сетки
> парметров
Изич. Задаём шаг рисуем линии. Поверх линий рисуем преграды. Что сложного-то?
> алгоритмы поиска пути и логики ИИ
Ну изич же. Добавляем в списки из п.1. приоритет и актуальность и получаем типичного быдлодвачера: хотеть фап-фап - идти в порнхаб, хотеть трал-трал - идти в гд, хотеть девелоп-девелоп - идти в... нее, есть более приоритетные задачи: пожрать, посрать, покурить. Мамка ввалилась в комнату и требует найти работу - включить режим кабанчика!
>>594674
Не сомневаюсь. Всё что ты можешь - это сренькать и просить готовые куски кода.
> Сренькнуть и я могу
Не сомневаюсь. Всё что ты можешь - это сренькать и просить готовые куски кода.
>>594699
Чево же ты свой гугол не напишешь? Схематично нарисовал свою говносхему и хуяришь по ней свой гугель
Чево же ты свой гугол не напишешь? Схематично нарисовал свою говносхему и хуяришь по ней свой гугель
55 Кб, 720x1280
>>594780
Ладно, сделою
Ладно, сделою
2,8 Мб, mp4,
690x456, 0:33
690x456, 0:33
первое подобие ИИ
5,8 Мб, mp4,
690x456, 0:41
690x456, 0:41
Короче запилил управление через мышку, потихоньку НПС допиливаются, трогать здесь - https://lolodin.github.io/My2DGame/
сделол анимацию ГГ, теперь это не серый мешок
>>595216
блин, может кто объясниить как он сделал ход персонажа через клик по пространству? везде в туториалаз только wasd примеры
блин, может кто объясниить как он сделал ход персонажа через клик по пространству? везде в туториалаз только wasd примеры
>>668328
Векторы погугли. Находишь вектор из позиции игрока в позицию мыши. Делаешь его длину равной 1. Потом умножаешь его на скорость и прибавляешь его к позиции игрока.
vx = mouseX - playerX
vy = mouseY - playerY
vlen = sqrt(vxvx + vyvy)
vx = vx / vlen speed
vy = vy / vlen speed
playerX += vx
playerY += vy
Это если скорость измерять в пикселях в кадр.
Векторы погугли. Находишь вектор из позиции игрока в позицию мыши. Делаешь его длину равной 1. Потом умножаешь его на скорость и прибавляешь его к позиции игрока.
vx = mouseX - playerX
vy = mouseY - playerY
vlen = sqrt(vxvx + vyvy)
vx = vx / vlen speed
vy = vy / vlen speed
playerX += vx
playerY += vy
Это если скорость измерять в пикселях в кадр.
Живой кто есть итт еще?
Есть группа, мне надо чтобы одинаковые болванчики с одинаковыми свойствами были как бэ независимыми. Т.е. если я буду отнимать хп при столкновении, то у одного конкретного, а не у всей группы. Вот как к одному обратиться и вообще его идентифицировать после создания группы?
this.hachi = this.add.group();
this.hachi.hp = 100;
Есть группа, мне надо чтобы одинаковые болванчики с одинаковыми свойствами были как бэ независимыми. Т.е. если я буду отнимать хп при столкновении, то у одного конкретного, а не у всей группы. Вот как к одному обратиться и вообще его идентифицировать после создания группы?
this.hachi = this.add.group();
this.hachi.hp = 100;
Тред утонул или удален.
Это копия, сохраненная 13 марта 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Это копия, сохраненная 13 марта 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.