Стив Джобс говорил - Я ХОЧУ ВСЕГДА БЫТЬ ГОЛОДНЫМ СТУДЕНТОМ! Сначало Трасер был послушным, а потом начал ложить на начальника.
Это не работает в том случае, когда ты пашешь на начальника, а он всегда тебе напоминает, что ты ниже по рангу и должен исполнять его приказы.
Цитатаfalcoware ()
Зажрался.
Да уж, зажрешься за вашу ЗП. Было время когда вы более-менее нормально платили, но я работал с вами и после, когда вы значительно её сократили, потому что я больше держался за счет мотивации, а не за счет денег.
afq, Когда-то у меня была навязчивая идея разработать свой 3D движок. Цель была не в том, чтобы создать что-то, что будет наравне конкурировать с уже существующими и популярными решениями, а просто сделать удобный инструмент для создания игр. Идея была подкреплена довольно сильной мотивацией, которая заключалась в том, что мне было очень интересно как устроены игровые движки и прочие средства для работы с графикой. Пробовал я воплотить свою идею и на Delphi, и на C#, и в конечном счете на C++. Первые попытки успехом не увенчались, я много раз забрасывал это дело и позже вновь к нему возвращался. Всё это длилось до тех пор, пока в один прекрасный момент Falco не предложил мне начать работу над созданием движка под его "брендом". На тот момент я был в курсе его репутации и сам не раз был объектом проявления различных причуд его нестабильной психики, но меня это не остановило, т.к. мысль о том, что я наконец смогу в долгосрочной перспективе заниматься тем, о чем давно мечтал взяла верх над здравым смыслом и я взялся за дело. В самом начале мотивация была на пределе, я работал буквально день и ночь, изучая C++ и пытаясь вывести хоть что то на экран. На тот момент в C++ я был абсолютным нулем, но спустя какое-то время я добился первых успехов. Появилось ядро движка, в котором было намешано куча разных библиотек под разные задачи, кривой редактор карт, который позволял "двигать", "вращать" и "перемещать". Всё это работало не благодаря, а вопреки, но я был доволен результатом своей работы, ведь за это время я многое изучил и осознал. Не теряя мотивации я продолжил совершенствовать плод своего творчества, продолжая не спать ночами. Спустя еще какой-то промежуток времени я добавил в движок возможность писать скрипты на шарпе, настраивать физику, звук, научил движок понимать различные форматы 3d моделей и текстур, писать шейдеры, настраивать материалы, воспроизводить звук через OpenAL и т.д. и т.п. Весь этот процесс сопровождался постоянным наступанием на грабли. Было очень много случаев когда я элементарно допускал утечки памяти или потерю указателей в дебрях кривой логики создания/уничтожения экземпляров объектов и потом по нескольку дней искал источники проблемы. Были случаи, как тут было упомянуто, когда я в процессе создания системы иерархии объектов запутывался в собственном коде, из-за того, что где-то что-то не до конца продумал и все сыпалось и падало.
И вот с момента начала прошло 4 года. Многие компоненты движка я привел в порядок, кривой код был переписан и в конечном итоге работал более-менее. К этому времени мотивация уже заметно упала и близилась к нулю, т.к. я тупо устал и желание писать движок почти пропало. Чтобы объяснить почему это произошло пройдусь по списку, который перечислил Storm54, чтобы понять с чем мне пришлось столкнуться реализовывая базовые компоненты движка:
• Удобный редактор. - Удобного редактора по итогу так и не получилось, потому что пытаясь добиться стабильности в работе самого движка и добавлению туда новых фич, не получалось уделять достаточно внимания редактору. • Импортер ассетов. - Импортер был реализован, но крови было пролито много. Несмотря на то, что сам импортер я взял уже готовый (библиотека Assimp), нужно было во первых, в нем разобраться, во вторых грамотно наладить взаимодействие с движком и учесть многие моменты, касательно того, что например, в 3д модели может быть анимация, зашитые текстуры, камеры, источники освещения и прочее. Анимацию импортировать и заставить сделать так, чтобы она работала в твоем движке не так то просто, как может показаться на первый взгляд. Нужно сначала сделать систему анимации в самом движке - это как минимум скелетная анимация, далее написать шейдер для GPU скиннинга, правильно подготовить и передать туда все матрицы для последующего их перемножения на видеокарте, научить её хотя-бы плавно переключаться из одного состояния в другое, реализовать сглаживание кадров чтобы не было рывков. Кроме этого нужно научить анимацию работать в паре с физикой, т.е. дать пользователю возможность самому двигать и вращать кости и чтобы при этом работал скиннинг не нарушая саму анимацию. • Механизм хранения проекта. - Тут может возникнуть сложность, когда нужно будет переместить ассет из одного места в другое. Т.е. нужно придумать такой механизм, чтобы связи между объектами движка и ссылками на ассеты не нарушались. Это у меня так и не вышло нормально реализовать. Но еще нужно заставить движок читать ассеты как из файлов, так и из каких-нибудь сжатых архивов, хотя-бы zip. Я убил на это довольно много времени, чтобы каждый тип ассета, будь то текстура, аудио-файл или 3д модель могли быть прочитаны из архивов. Много ночей было проведено реализовывая этот механизм. • Кэш ассетов и инвалидация кэша. - Тоже непростая задача. При импорте ассетов, нужно создавать кэш, чтобы каждый раз вновь не лезть в исходный файл и не тратить время на его декодирование. Также нужно отслеживать изменение файла и обновлять кэш. • Звуковая система. - Звук это вообще отдельная история. Что бы заставить аудиофайлы играть в 3d пространстве нужно сначала проанализировать аудиоданные, mono это или stereo, взять во внимание частоту дискретизации, битрейт. Если звук стерео, то нужно его сначала преобразовать в моно чтобы он играл в 3d. Реализовать механизм старт/пауза/стоп/прыгнуть в позицию/ускорить/замедлить и т.д. Все это мне пришлось делать, и в итоге стабильной работы я не добился. То и дело что то вылетало, глючило.
Все это - лишь малая часть того, с чем придется столкнуться при разработке движка. Понятно что все зависит от потребностей, но я описал конкретно мой случай. Я писал движок один, и мне это было интересно, и к тому же платили (спасибо Falco). Но всё же огромный объем работы, куча различного вида сложностей оказалось мне в одиночку не по силам.
Итог для меня: Минус: простого и понятного инструмента не получилось, было потрачено очень много времени, сил и денег (денег к счастью не моих, но тому кто их потратил очень обидно). Плюс: за работу мне платили и я получил огромный опыт.
Данный пост был написан не с целью отбить у тебя желание совершенствоваться и развиваться, и не преследует целей пересадить тебя на уже готовый движок. Я лишь хочу предостеречь тебя от тех трудностей, с которыми придется столкнуться, в процессе решения которых, у тебя может пропасть мотивация и желание двигаться дальше. Если тебя это не останавливает, и ты хочешь развиваться в этом направлении, у тебя есть куча времени и нет необходимости в деньгах, то это несомненно плюс в текущем контексте. Вопрос лишь в том, на сколько хватит твоей мотивации.
В заключении скажу, что даже если игра не ААА уровня, но хоть какой-то несложный 3D, с простой механикой, это еще не говорит о том, что движок для такой игры будет просто написать. Пример игры на моем несложном движке, можешь посмотреть в теме движка, Falco там выкладывал ссылки. Попробуй в неё поиграть и напиши тут свои впечатления. Возможно ты скажешь что у меня кривые руки, и всё такое, и быть может это правда. Но по крайней мере я старался как мог, и вот что из этого вышло.
Сообщение отредактировал tracer07 - Вторник, 07 Марта 2023, 16:27
Ну и вопрос скорее к tracer07, по какому принципу баг фигс идёт?
На данный момент я занимаюсь двумя проблемами, которые тут были упомянуты, а именно запуск проекта в окне редактора и превью камеры.
Цитатаslagusev ()
Программист, хотел бы, но видимо потихоньку перегорает...
Постепенное выгорание есть, от этого никуда не деться. Если в начале я работал больше на энтузиазме, чем из-за денег, то сейчас ровно наоборот. Хотя денег там кот наплакал.
Не понял какие у Вас возникли проблемы с MeshRenderer
Сделаю, когда доберусь до туда. В движке просто огромное количество всяких разных вещей. Сделать чтобы все работало идеально у меня просто не хватает сил.
ЦитатаStorm54 ()
Если сейчас в движке ассеты идентифицируются по пути, то это сразу приводит к проблемам
Знаю, но пока что есть то есть. В дальнейшем поправлю.
Движок уже 4 года пилю, а там конца и края не видать. Не знаю вообще смогу ли до конца дойти. И я сам, честно, смысла в нём не вижу.
Сообщение отредактировал tracer07 - Вторник, 19 Июля 2022, 17:47
Движок ставится в Program Files (x86), но является 64 битным приложением.
Логично. Поправлю если не забуду. Но там вроде можно выбрать куда ставить, если уж очень хочется.
ЦитатаStorm54 ()
При установке масштаба в винде выше 100% весь интерфейс превращается в мыло.
Никогда не ставил масштаб выше 100%, монитор стандартный, нет необходимости, поэтому об этом даже не догадывался. Спасибо за информацию, постараюсь пофиксить.
ЦитатаStorm54 ()
Нет быстрого перемещения камеры к нужному объекту на сцене. В юнити для этого существует двойной клик по объекту в иерархии.
"F" на клавиатуре. Двойной клик позже завезу.
ЦитатаStorm54 ()
Не получается перенести ассеты в проект через Drag & Drop.
Да, есть такой недочет. Пока можно просто копировать ассеты в папку Assets внутри корневого каталога проекта, движок их подхватит.
ЦитатаStorm54 ()
Отсутствуют встроенные примитивы
Create Object -> Primitives
ЦитатаStorm54 ()
FBX формат напрочь крашит
Такое было в старой версии 2.x. В версии 3.x такого не должно быть.
ЦитатаStorm54 ()
Ужаснейшая сетка, отображаемая на сцене
Согласен, сетку нужно доработать.
ЦитатаStorm54 ()
Какая-та странная логика заполнения компонентов
Именно с Mesh Renderer я еще пока не решил как назначать туда меши, т.к. одна модель в основном содержит в себе несколько нодов с разными мешами и при загрузке они разбиваются на отдельные файлы и кешируются в папку Library, откуда уже впоследствии грузятся в сцену. Папка Library по идее не должна быть доступна пользователю. Может позже сделаю чтобы модели могли разворачиваться и отображать меши которые там содержатся, и оттуда можно будет их назначить какому либо Mesh Renderer'у. Ну а пока можно перетащить 3д модель в сцену и тем самым загрузятся все меши которые там есть и создадутся для них Mesh Renderer'ы.
ЦитатаStorm54 ()
Как осуществляется индексация объектов в движке? В юнити у каждого ассета существует UID
Так же по UID для объектов сцены. Ассеты идентифицируются по их пути относительно папки Assets.
На остальные вопросы хорошо ответил slagusev, за что ему большое спасибо
Ну и пожалуй добавлю, что я решил взять IMGUI для интерфейса, т.к. его проще запускать на разных платформах. Qt к тому же платен для коммерческих проектов, на сколько я знаю и там одно из обязательных условий для бесплатного использования - это необходимость открыть исходники своего ПО. Планов открывать исходники у Falco пока нет, поэтому Qt использовать я не стал, хотя в начале его присматривал.
Цитатаslagusev ()
1. По клику на текстуре, редактор так прям конкретно призадумывается временами.
Так происходит при первой загрузке текстуры, т.к. она кешируется и впоследствии загружается уже быстро.
Цитатаslagusev ()
2. При просмотре материала, в поле albedo map показывает текстуру от другого объекта
Да, есть такой косяк, все забываю поправить.
Сообщение отредактировал tracer07 - Вторник, 19 Июля 2022, 15:25
JesusOnExtasy88, Первое что пришло на ум: Заводишь в Create две переменные - health и health_current, присваиваешь им одинаковое значение, например 100. В момент получения урона, вычитаешь из health_current нужное значение. И в Step вставляешь такой код: health = lerp(health, health_current, 0.15);
боже фалко еще живо??? кто в него палкой потыкал??
Хех, он живее всех живых)
Цитатаzaicev9797 ()
Зашел, увидел сверстаный на коленке школо-сайт
Да, сайт конечно так себе, но я пробовал выкладывать свои старинные модели, сделанные кривыми руками, и хоть их там и никто не покупает, но процент в партнерку капал. Но если вы хотите 100-1000$ в месяц, то это да, пожалуй не для вас.
EchoIT, Ну я бы смог, но опять же, столько времени на это взять негде. Нормальные игры делаются командой. А что может сделать один человек за такое короткое время? Да и я пока доволен тем что есть, никуда дальше не рвусь
Сообщение отредактировал tracer07 - Пятница, 15 Апреля 2016, 02:29
Но ведь это солянка из ассетов сделанная за 1 день на коленке?
кое-кто, Эту игру я делал 2 месяца. Уровни все полностью моделил сам. Программировал все сам, инвентарь, оружие, ИИ монстров и т.д. Даже куски кода не тырил ниоткуда. Я по большей части программист чем моделлер, и на моделирование всего что там в игре есть ушло бы около года
Сообщение отредактировал tracer07 - Четверг, 14 Апреля 2016, 19:29
Anthem, Нет нет, вовсе не наплевательское. Просто это врядли случится у кого то еще, т.к такая проблема возникла из за того, что я импортировал в проект скрипт из другого проекта, который и поменял систему вращения объекта
Всем привет. Вопрос такой: Не знаю что я сделал не так, но у меня теперь почему то поворот объекта в редакторе задается радианами и с помощью четырех значений? Почему так? что делать что бы вернуть прежний стиль вращения объектов? И кстати если выделить несколько объектов, то поворот осуществляется старым методом, градусами.
------------------
Проблему решил. Проблема возникла из за того, что я импортировал в проект скрипт из другого проекта, который и поменял систему вращения объекта
Сообщение отредактировал tracer07 - Вторник, 22 Декабря 2015, 19:50
tracer07, если планируешь поступить на другую специальность, я бы на твоем месте бросил. Нет смысла учиться тому, что тебе не нравится. Если же такая перспектива сомнительна, то лучше доучиться. Диплом дает преимущество при устройстве на управленческие, экономические, хозяйственные специальности перед умными людьми, у которых его нет. Если же ты вообще не собираешься связывать свое трудовое будущее с социальной иерархией (планируешь заниматься творчеством или фрилансом), то оконченное высшее тебе вообще может не пригодиться. В таком случае лучше начать практическую деятельность как можно раньше
Спасибо за развернутый ответ! Вот я и думаю так же, поэтому скорее всего начну заново, поступлю туда, где хочу учиться
Вообще, я хочу связать свою жизнь с игроделанием, устроиться куда-нибудь где создают игры
Добавлено (08 декабря 2015, 22:12) ---------------------------------------------
ЦитатаBizzy ()
З.Ы. А вообще учился (мех-мат программист, вроде так называлось), застрял на 3 курсе (финансово), теперь сам )) Может все таки соберусь и доучусь.
Фух, я на бюджете)
Добавлено (08 декабря 2015, 22:16) --------------------------------------------- Xakep, у меня тоже много долгов, режим дня никакой, по ночам бодрствую, днем сплю. Нужно что то менять в этой жизни...
ЦитатаXakep ()
Да ну фигня, обычно что-то учат те кто и так хочет учиться и учится, остальные ищут отходные пути, да и мало чему учат, в основном очень много бесполезной писанины.
Это верно, от этого всякое желание учиться и получать образование отпадает
tracer07, ты думаешь, работая на дядю ты будешь делать, что тебе хочется? Наивный!
Я не хочу работать на дядю) А вообще, работа приносит деньги, а деньги дают хлеб, поэтому хочешь-не хочешь, придется. Учеба конечно тут играет важную роль, однако по ошибке я выбрал не то направление, какое хотел бы...