24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
>>256811894 И? Суть в том, что движки уже не такие как во времена Кармака. Ид в своё время совершили прорыв в технологиях. Сейчас всё это уже не гарантирует тебе охуенных продаж. Сейчас всё решает либо новаторский геймдизайн, либо франшизы.
>>256813033 >>256813033 >const int width нихкуя ебать, все равно считает что не константа, мол значение то туда положит конструктор, а пока оно неизвестно
>>256813255 а чем динамика хуже? при const нужно явное объявление вроде, а динамика поможет сэкономить ресурсы в случае размера карты меньше максимального. конечно, можно и несколько const width x1-n объявить под фиксированные размеры
>>256812796 Мы в унике делаем все массивы через указатели, например class Vector { int arr; public: Vector();//конструктор без параметров void set();//метод инициализация вектора } void Vector::set() {//инициализация вектора if (!arr) { int flag = 0; cout << "введите размерность вектора" << endl; cin >> size; if (size == 0) return; arr = new int[size]; } cout << "Введите элементы в вектор" << endl; for (int i = 0; i < size; i++) cin >> (arr + i); }
>>256811175 (OP) Бля чтоб создать свой движок нужно быть пиздец прошаренным. Ты же создаешь не что-то уже готовое, а инструмент с помощью которого можно уже что-то создать
>>256815157 Что такое LOC? Количество строчек кода?
>>256811175 (OP) О братан, я вижу ты в теме, что почитатб про создание собственных движков? Я сам юнити-разРАБотчик, давно хочу попробовать попилить собственный движок.
>>256815372 > ну да, на стеке и окажется, смысл в том, что у него можно взять размер, есть begin end, вся эта хуйня Но begin/end есть и у обычного массива, шиз, они ничем не отличаются.
>>256815445 ну да, риально, захардкожу константы прямо в код, где нужен размер этого массива, то если нужно будет передать куда-то, то передам сырой указатель и размер отдельно, зато не стд аррэй, лол
>>256815563 это чтобы range-based for loop работал
>>256815620 Опыт это когда над тобой стоит супер опытный чел ты под его давлением 1-3 года каждый день быстро делаешь правильные вещи. Остальное не опыт.
>>256815698 >то передам сырой указатель и размер отдельно конечно, игровой движок должен быть максимально эффективным, зачем говно таскать всякое ненужное
>>256815732 ок, да, я не знал, но в любом случае с нормальным контейнером удобнее работать
>>256815848 нигде не лежат, там внутри этой структуры только сам массив и хранится, размер засунут в шаблонный параметр, раскормится тут только размер бинарника и время компиляции)00
>>256816125 Да как бы плюсы и есть говно для дебичей по сути. Сразу отвечу растопетухам, раст такое же говно, но для дебичей, которым надо НОВИНОЧКУ пихнуть.
>>256815698 >если нужно будет передать куда-то, то передам сырой указатель и размер отдельно, зато не стд аррэй ладно, я тут тоже хуйню сказал, что fixed size array, что std array одно говно будет и можно передавать шаблонным аргументом в обоих случаях
>>256816432 Я не представляю, что ваще делать с этим вашим Си. Ни шаблонов, ни ссылок, ни удобных контейнеров из STL, ни ООП, хотя говорят как-то умудряются писать на си в ООП стиле.
>>256816598 в 99% случаях нужен просто unique ptr, которые не хранят количество ссылок, в остальных случаях, если несколько хуёвин владеют ресурсом и ты используешь сырой указатель, очень легко напрашиваешься на то, чтобы разыменовать делитнутый указатель, нужно слишком внимательно следить за порядком, в котором освобождаются ресурсы, чтобы ничего не протекло
>>256811175 (OP) >Я ПРЯМО СЕЙЧАС НАЧИНАЮ ПИСАТЬ СВОЙ ИГРОВОЙ ДВИЖОК. Что почитать по теме? Юзать буду с++ Я прямо сейчас начинаю строить свой дом. Что почитать по теме? Юзать буду кирпич и цемент.
>>256816760 > легко напрашиваешься на то, чтобы разыменовать делитнутый указатель, Это если в глаза ебешься, руки из жопы и мозг как у рыбки. Короче если ты веб-макак, то да, такое будет, ещё и утечки памяти постоянные будут.
>>256816936 А сколько ты ресурсов на этом "перемешивании" которое у указателей один хуй копирование проебешь процессорного времени? Оп же убероптимизированный нанодвижок пишет, ему каждый процессорный тик на вес золота
Кароче есть класс приложухи App, у него есть методы: 1. Init - тут загружаются различные материалы для игры, инициализируются переменные. 2. Game - тут его величество Главный Цикл 2а. Отобразить на экране что-то 2б. Ждать ввода от пользователя 2в. Отработать ввод(изменение состояния игры, координат и тд) и произвести реакцию(ИИ) 2г. Гото 2а 3. Done - завершение работы приложения Потом создаёшь уже остальные классы и пишешь им логику взаимодействия согласно вышеизложенному.
>>256817052 так нисколько, ты же сам говоришь, что это будет просто копирование одного указателя, которое бы и так было, просто обезопашиваешь себя от хуйни, я видел видео, где сравнивался асм код, который сгенерился для сырого и для unique ptr, там одно и то же было, самому лень проверять
>>256816669 >ни удобных контейнеров из STL Которые используют только в my-laba project? >ни ООП Которое ненужное говно говна? >ни ссылок Которые не нужны, потому что у тебя в твоём игровом движке bump allocator?
ОП, начни с чтения https://www.gameprogrammingpatterns.com/ это охуенное чтиво (для всех итт, даже если не собираетесь заниматься гейдевом, а просто претесь от программирования) если осилишь - возвращайся
>>256817187 Обычное копирование это просто копирование, а "перемещение" это копировпние+затирание старого, короче практически в два раза больше действий требуется, плюс умные указатели любого типа очень хуево работают в присутствии обычных,
>>256817207 >Которые используют только в my-laba project? чому? вроде же норм >Которое ненужное говно говна? да, обожаю наследование, обмазываться шаблонами и концептами, инкапсулировать поля класса в своём очке >Которые не нужны, потому что у тебя в твоём игровом движке bump allocator? я не ебу что за бамп аллокатор, но ссылки же те же указатели, только их нельзя удалить, не?
>>256817325 а да чёт не подумал, ну да, всё, пиздец тогда...
Сука я свинорылая залупа. Смотрите крч. Мне надо в функцию draw передать двумерный массив чтобы его отрисовать, а в функции delete я отдаю указатель на указтель чтобы освободить память.
>>256817940 А причем тут функциональщина? В процедурке, как в С, расходы подобные разве что на вызовы функций и соблюдение декларации о вызовах.
Проблема с кешированием... Ну допустим вот есть строки. Ты выделил память на класс строки (допустим там char, size_t lenght), потом еще выделил на char. Получается 2 аллокации, которые вполне могут быть в разных местах (особенно при реалокации памяти под char*) - наебывается кэш.
>>256818098 >Проблема с кешированием... Ну допустим вот есть строки. Ты выделил память на класс строки (допустим там char, size_t lenght), потом еще выделил на char. Получается 2 аллокации, которые вполне могут быть в разных местах (особенно при реалокации памяти под char*) - наебывается кэш. Да забейте вы на кэш, подобная параша вообще по-разному может работать, с той же строкой класег будет на стеке, а буфер под строку уже через алокатор запросят.
>>256818146 архитектурный надзор итт зачем хранить поле, если на нем ничего кроме питона и яблока нет. Логичнее хранить змея (причем можно в одномерном массиве, он же длинный, но не широкий) и координаты яблочка.
Кстати, раз тут такие гении плюсов, повелители си собрались, то может кто подсказать способ вызова конструктора так, чтобы он отработал по конкретному адресу что-то типа new, но не по новому адресу, а по адресу из какого-нибудь указателя
>>256817999 Пиздец, вот это достижений создал двумерный массив и заполнил его нулями, ты реально настолько ущербный или просто притворяешься? И это за 3 часа
>>256818530 1. Карта должна хранить числа, обозначающие номер объекта. 2. Должен быть язык, описывающий эти объекты. Не то чтобы скриптовый, просто описывающий их и создающий как объекты в памяти.
>>256818644 Ты не понимаешь, у этого не должно быть цели вообще. Человек просто хочет себя чем-то занять. Я вот тоже когда водки нахуярюсь иду какую-то хуйню писать.
>>256811175 (OP) > ноль знаний, ноль умений > Я ПРЯМО СЕЙЧАС НАЧИНАЮ ПИСАТЬ СВОЙ ИГРОВОЙ ДВИЖОК Начинание неплохое, но закончишь ты его лет эдак через 15 в лучшем случае и то на выходе получится уг
>>256818974 Ну вот топ геймдевы пилят один движок под одну игру, а потом на нем ебошат целую серию с модификациями самого движка, а есть юнити, там универсальность хоть попой жуй.
>>256816019 Творчество это проектирование и закладка возможностей в движок, а их использование это макакинг типа собери робота из набора готовых деталей. Аналогия с картинами плоха, ибо тут инженерное творчество, инженеру интереснее создавать микропроцессор, чем смартфон на его базе, это более высокий и сложный уровень. Алсо ноудискас, просто возможно разный взгляд на вещи: кто-то может считать творчеством искусное управление гоночным болидом, кто-то прооектирование общей компоновки, а кто-то разработку йоба-системы впрыска топлива.
>>256820245 >интереснее создавать микропроцессор, чем смартфон на его базе, это более высокий и сложный уровень Ты, кажется, не понимаешь, что иногда микропроцессор не сложнее on chip шины в смартфоне/мк. Рассуждения про болид про хуйню выдают пиздабола. Любая вещь сложна, если ты профессионал, проста она только для долбоёба, который в этом не разбирается.
>>256820973 Хуета для работы с массивами. Полезная как и string. Советую начинать использовать.
vector<int> test; test.push_back(5);
Там ещё много разных интересных функций есть, типа count, empty, clear..
Ещё есть list, но он не имеет возможности достать элемент по индексу. Только если циклом проходить и через итератор. Но list быстрее.
Вообще, я не ебу вообще что ты сейчас пытаешься писать, ты бы для начала программирование до хорошего уровня подтянул, потом уже с directx или opengl (лучше directx) научился играться, а потом уже за такие вещи брался.
>>256811894 UE4/5 Unity Godot кстати весьма неплох Leadwerks Game Maker DarkBasic прости господи.
А вообще советую начать с того, что скачай исходники чего-нибудь (недавно вот выкладывали в сеть исходники сурса и IdTech от Doom 3) и внимательно их изучил.
Структура, архитектура, вот это все.
Затем тебе нужна четкая структура того, что тебе надо делать. Сначала - горы документации. Заведи Obsidian и заводи по заметке на каждый класс, со ссылками на все что задействуется. Так у тебя будет граф классов, с зависимостями, цепочками наследования, документацией и пониманием как оно работает, иначе ты просто ебнешься в какой-то момент.
И только потом начинай делать. Выбери методологию. Выбери семью. Выбери телевизор с большим экраном. Выбери стиральную машину и следуй ей. Водопад? Ебашь водопад от начала и до конца. Agile? Реализуй задачи итеративно. Не отходи от этого, иначе у тебя будет лютый мусоросборник.
Но вообще для 2D параши - простая задача. Для чего-то более сложного ты будешь делать лет 10.
Для 2D можешь еще поизучать ROM от игр для NES и тому подобного. Они компактны, но при этом все реализуют в себе.
> Вообще, я не ебу вообще что ты сейчас пытаешься писать, ты бы для начала программирование до хорошего уровня подтянул, потом уже с directx или opengl (лучше directx) научился играться, а потом уже за такие вещи брался.
> Гошан, ты? Я не гошан
Успешно работаю мидл ращработчиком. Никто и не подозревает что я ДАЛБОЕБ
>>256816669 ФУНКЦИОНАЛ ОЧКА На самом деле нет, от под нее плохо заточен, хотя и можно работать, функторы же есть, епта. С каррированием будут ебля, но в целом - жить можна.
>>256821219 Работай на себя. Один из ключевых плюсов кодинга в том что опыт можно нарабатывать, в теории конечно, не выходя из сычевальни. Да, сейчас будут 300к/с которые скажут что не так но это всё же опыт. Вот экономистом или юристом без реального устройства или создания своего бизнеса в случае экономиста, наработать опыт самому нереально.
>>256821299 Если ты имеешь ввиду делать проекты для себя, то именно этим я и занимаюсь с самого начала самостоятельного изучения С++. Мне это нравится, но при одной мысли идти куда-то работать бросает в дрожь. Хотя, это наверное не совсем с языком связано, а вообще. Я ж нигде по сути не работал и ответственности дико боюсь.
>>256812796 это же статический массив сука блять иди учи плюсы, ты дальше хеллоу ворлда видимо не продвинулся хотя если троллишь то молодец, я даже не понял сразу)
>>256822327 И вообще чтобы написать норм двиг лучше почитать суср другого двигла idTech там, UE старый Почитать, понять что это нафиг не надо и бросить
>>256822970 Ок. Если ты не троллишь, то ты глобально недооцениваешь: а) объём усилий, необходимых для создания простейшего движка; б) сложность C++, с которым ты, как я вижу, не особо знаком. Единственный практически полезный смысл этой работы — это изучение языка программирования и физико-математических формул. Тем, что ты сможешь написать, в серьёзных проектах не получится воспользоваться. Так что, прежде чем начинать, подумай, устроит ли тебя такой результат.
>>256823161 Я за год так отупел что мне нужно дичайше сложная задача. В школе занимался олимпиадами по информатике(в том числе на плюсах) и сдал егэ почти на 100ку Обожаю сложные задачи и интеллектуальные загадки. На работе такого тупо нет. Сейчас себя чувствую максимальным говном. Даже два года назад я бы обосрал себя в жтом треде за такой код
>>256823238 Ты слишком сложную задачу себе поставил. Да и проектированием не занимался, не расписывал, какие сущности у тебя будут и как взаимоотноситься и взаимодействовать. В случае сложного проекта, а движок — это очень сложно, ты просто запутаешься и не разгребёшься.
Да и даже в трёх методах класса map, который ты пишешь, уже видны огрехи. Расписывать, или не интересно?
А я уж разберусь в соло спроектировал и запустил срм систему полного цикла, ее начали продавать, а потом я дропнул шаражкину контору. Хотя это была канеш однобокая задача довольно, но тоже ничего не знал о таких системах когда взялся
>>256823469 Не видел исходный код этой системы, ничего сказать не могу.
Для змейки тебе нужно прямоугольное игровое поле. Ты решил сделать его при помощи массива массивов. Поэтому ты выделяешь сначала память на массив, а потом в цикле — на каждый из подмассивов. А затем ещё зачем-то заполняешь их символом '0'. Ну а в отдельном методе — удаляешь созданное. Это неэффективно, прям совсем.
>>256823587 Во-первых под прямоугольное поле лучше выделить одномерный массив длиной ширина × высота, а в методах доступа к клетке предусмотреть перевод двухмерной координаты (i, j) в одномерную k. Таким образом ты сразу будешь получать кусок памяти нужной величины, который легко заполнить одним значением с помощью memset, а также легко удалить всего одним delete.
Однакл во-вторых для змейки тебе вообще не нужно хранить информацию обо всех клетках поля. Тебе нужно хранить координаты «кроликов» (или что там жрёт твоя змейка) и саму змейку — координаты головы, хвоста и каждого из её сгибов. То и другое лучше всего реализовать списками.
>>256829567 Ебошишь активные и не очень списки объектов, при отрисовывпнии проверяешь, какие объекты попадают в область видимости, перед перемещением/действием проверяешь, нет ли какой-нибудь хуйни и так в цикле для каждого объекта
Что почитать по теме? Юзать буду с++ как самое оптимизирумое, что есть из высокоуровневых