Вот уже месяц, свободными вечерами после работы пишу УБИЙЦУ Unity, Unreal и Rage!. Решил я написать свою систему ECS. Честно признаюсь, до этого я не знал, что она уже существует. И даже то, что она называется ECS я случайно узнал лишь пару недель назад. Просто однажды мне пришло в голову, что было бы неплохо загнать всё объеткты и сущности игры в единую таблицу. Я решил использовать двухмерный массив. Изначально я даже назвал это всё Arlog. Логика в массиве.
Брать готовые наброски чьи-то или использовать какие-нибудь фреймворки не стал. Хочу на выходе получить логически-законченное приложение, которое способно хранить и обрабатывать огромное количество данных в табличном виде типо (пик) . Символ A - это чисто для себя назвал абстракцию ячейки в массиве. Символ В - это split ячейки. Т.е ещё меньшие доли ячейки |х|у|z | и т.д.. т.е B это самая минимальная атомарная часть данных..
..
Конечно же основная цель - это выпускать на этом движке массу увлекательных игрушек, убийц GTA / Worldoftanks/.. Minecraft/ и пр пр..
На деле, хоть бы убийцу тетриса написать сперва))..
Короче говоря, если серьезно, то написал уже больше двух десятков функции и процедур, целевая задача которых - это прочёсывание огромного двухмерного массива Objects на предмет поиска тех или иных ячеек с данными.
На пике изображена и распечатана минимальнейшая тестовая табличка с пятью объектами (* х5 экземпляров для каждого класса объектов) . Такие объекты как cat, man, sun, box, и даже god с одним лишь единственным параметром "Любовь".
Но это всё просто для абстракции придумывал просто на ходу, суть не в этом.
Главные, базовые структуры каждой структуры данных в этом моём недодвижке, это строчки в первом элементе каждой строки.. ну к примеру хочу я создать человечка. Пишу задающую строку для него. Сначала название объекта во множественном числе, потом в единственном. (Потом объясню зачем во множ. задумывалось)
Mans|man|#0|#x|#y|#power|@name
Первый токен #0 означает количество экземпляров данного класса. Туда не лезем, а просто указываем что это Int символом решетки, и ставим значение 0 соответственно. По мере того как движок случайно или преднамеренно будет добавлять/клонировать экземпляры какого-нибудь класса, он сам будет изменять это значение на 1,2,3.. 5835...и т.д. Ну или командой функцией типо:
AddA("man", 36, 82, 10, Anon )
Можно это самостоятельно сделать. И двиг добавить в таблицу новый экземпляр какого-нибудь очередного Васька в список man.
Поскольку каркас уже обозначен в крайней левой ячейке n x 0, то транслятор уже не задаёт ебанутых вопросов, типо что такое 36, 82, и тем более Anon.
Он понимает что это x, y , name
Все функции на пике 2. Это я тестировал их.
Загвоздка у меня возникла с функцией удаления DelA(.....
Пытаюсь научить компилятор понимать просьбы "человека" типо этой:
DelA("car", x,y = 356,862);
Что означает удалить все машины, у которых x = 356, a y = 862. (Решил параллельное присвоение использовать , под него проще синтаксический анализатор было сделать), нежели под х = 375, у = 903, z =.....
Короче говоря, практически все "низкоуровневые" функции я прописал и программу научил их понимать и выполнять. А из непосредственно высокоуровневых функций будут типо отыскать все экземпляры где live жизни <= 0 , а затем удалить их. Или же такие функции как установить значение #y для всех экземпляров класса "stone" y-- если камень который был под ним, исчез. И т.д. ну это все примеры разумеется.
Ну а как доточу последние штрихи, то кину эти все команды в loop необходимо уложиться в 30-45 миллисекунд чтобы укладываться в 25-30 кадров/с рендеринга
Как думаете , получиться что-нибудь из этого всего? Можно ли хоть что-то типо Bejeweled будет написать на этом всём?
Брать готовые наброски чьи-то или использовать какие-нибудь фреймворки не стал. Хочу на выходе получить логически-законченное приложение, которое способно хранить и обрабатывать огромное количество данных в табличном виде типо (пик) . Символ A - это чисто для себя назвал абстракцию ячейки в массиве. Символ В - это split ячейки. Т.е ещё меньшие доли ячейки |х|у|z | и т.д.. т.е B это самая минимальная атомарная часть данных..
..
Конечно же основная цель - это выпускать на этом движке массу увлекательных игрушек, убийц GTA / Worldoftanks/.. Minecraft/ и пр пр..
На деле, хоть бы убийцу тетриса написать сперва))..
Короче говоря, если серьезно, то написал уже больше двух десятков функции и процедур, целевая задача которых - это прочёсывание огромного двухмерного массива Objects на предмет поиска тех или иных ячеек с данными.
На пике изображена и распечатана минимальнейшая тестовая табличка с пятью объектами (* х5 экземпляров для каждого класса объектов) . Такие объекты как cat, man, sun, box, и даже god с одним лишь единственным параметром "Любовь".
Но это всё просто для абстракции придумывал просто на ходу, суть не в этом.
Главные, базовые структуры каждой структуры данных в этом моём недодвижке, это строчки в первом элементе каждой строки.. ну к примеру хочу я создать человечка. Пишу задающую строку для него. Сначала название объекта во множественном числе, потом в единственном. (Потом объясню зачем во множ. задумывалось)
Mans|man|#0|#x|#y|#power|@name
Первый токен #0 означает количество экземпляров данного класса. Туда не лезем, а просто указываем что это Int символом решетки, и ставим значение 0 соответственно. По мере того как движок случайно или преднамеренно будет добавлять/клонировать экземпляры какого-нибудь класса, он сам будет изменять это значение на 1,2,3.. 5835...и т.д. Ну или командой функцией типо:
AddA("man", 36, 82, 10, Anon )
Можно это самостоятельно сделать. И двиг добавить в таблицу новый экземпляр какого-нибудь очередного Васька в список man.
Поскольку каркас уже обозначен в крайней левой ячейке n x 0, то транслятор уже не задаёт ебанутых вопросов, типо что такое 36, 82, и тем более Anon.
Он понимает что это x, y , name
Все функции на пике 2. Это я тестировал их.
Загвоздка у меня возникла с функцией удаления DelA(.....
Пытаюсь научить компилятор понимать просьбы "человека" типо этой:
DelA("car", x,y = 356,862);
Что означает удалить все машины, у которых x = 356, a y = 862. (Решил параллельное присвоение использовать , под него проще синтаксический анализатор было сделать), нежели под х = 375, у = 903, z =.....
Короче говоря, практически все "низкоуровневые" функции я прописал и программу научил их понимать и выполнять. А из непосредственно высокоуровневых функций будут типо отыскать все экземпляры где live жизни <= 0 , а затем удалить их. Или же такие функции как установить значение #y для всех экземпляров класса "stone" y-- если камень который был под ним, исчез. И т.д. ну это все примеры разумеется.
Ну а как доточу последние штрихи, то кину эти все команды в loop необходимо уложиться в 30-45 миллисекунд чтобы укладываться в 25-30 кадров/с рендеринга
Как думаете , получиться что-нибудь из этого всего? Можно ли хоть что-то типо Bejeweled будет написать на этом всём?
>>107 (OP)
Заранее сори за очепятки смешные, сам сижу рофлю щас.. перечитал охуел.
Конечно же получится)
Заранее сори за очепятки смешные, сам сижу рофлю щас.. перечитал охуел.
> Как думаете получитЬся ли ?
Конечно же получится)
Во первых, ты не совсем понимаешь чем занимается игровой движок. Это шейдеры-хуейдеры, люмены-хуюмены, скелетная анимация и прочее. И в создании игр, погроммирования процентов 10% в самом сложном случае, остальноэ то работа художников, аниматоров и других бесполезных гуманитариев.
А ты просто угораешь по программированию, изобретая велосипедные структуры данных на основе хешмапа. В этом разделе ты вряд ли найдешь поддержку, ибо тут 3.5 анона, умеющих хоть как-то сносно кодить
А ты просто угораешь по программированию, изобретая велосипедные структуры данных на основе хешмапа. В этом разделе ты вряд ли найдешь поддержку, ибо тут 3.5 анона, умеющих хоть как-то сносно кодить
>>109
Мдэ, ну и движкописи пошли..
Скажу честно, читал пару строк вначале, середине и в конце.
По уровню ебанутости ты движкопися обыкновенный.
Поэтому курс лечения можешь начинать с легких нейролептиков, Кветиапин 100мг, 1 раз в день.
> получиться
Мдэ, ну и движкописи пошли..
Скажу честно, читал пару строк вначале, середине и в конце.
По уровню ебанутости ты движкопися обыкновенный.
Поэтому курс лечения можешь начинать с легких нейролептиков, Кветиапин 100мг, 1 раз в день.
>>107 (OP)
Нахуя ты каждую неделю высираешь новый тред фантазий? Они же все как под копирку.
Нахуя ты каждую неделю высираешь новый тред фантазий? Они же все как под копирку.
>>130
Я первый раз это сюда пишу. Не знал что у меня уже есть последователи . ЪАХ АХ АХ Аааа..
Покажи хоть эти простыни, интересно взглянуть
Я первый раз это сюда пишу. Не знал что у меня уже есть последователи . ЪАХ АХ АХ Аааа..
Покажи хоть эти простыни, интересно взглянуть
>>127
Да я понимаю, что я не раскрыл тему шейдеров и всех этих алгоритмов поиска пути, Lens flare, collide, bones/object анимаций и пр.
Я хочу попробовать скроить из всего этого хотя-бы симулятор какого-то муравейника. С видом сверху.
Понятно понятно дело что я шучу насчёт GTA и Майнкрафт))
Да я понимаю, что я не раскрыл тему шейдеров и всех этих алгоритмов поиска пути, Lens flare, collide, bones/object анимаций и пр.
Я хочу попробовать скроить из всего этого хотя-бы симулятор какого-то муравейника. С видом сверху.
Понятно понятно дело что я шучу насчёт GTA и Майнкрафт))
>>107 (OP)
Зачем? Ведь есть bevy.
Зачем? Ведь есть bevy.
Обновить тред