Перенос с другого сайта.
Всегда хочется знать и уметь всё на свете. Но это малоэффективно.
И по большей части эти мысли крутятся вокруг денег.
И часто из-за круговорота этих мыслей, вообще перестаёшь что-либо делать.
Сейчас я выбрал ютуб канал и программирование. Но большую часть времени я занимаюсь не этим. А просто бесполезными занятиями.
Каналом заниматься проще, но толку особо от этого нет.
Программированием заниматься перспективнее, и это даже мне нравится. Когда получается.
Когда не получается, не нравится. :)
Я ещё пытаюсь свою деятельность сопрягать с мыслями, что я не буду сидеть на одном месте.
Писать и монтировать видео в не дома очень не комфортно. По крайней мере для меня. В особенности на игровом канале.
А программировать можно где угодно. И если делать небольшие проекты, хватит среднего ноутбука.
Если я продолжу прыгать от одной деятельности к другой, то я так и останусь на одном месте.
---
Моё обучающее (шпаргалку) видео начали смотреть.
Скорей всего продолжу записывать видео для этого канала и заброшу все остальные каналы.
Много сил и времени для таких видео не требуется.
Тем более я сам долго ищу нужную информацию. И часто это приводит к тому, что я бросаю изучение.
Может кому-нибудь будет полезен мой опыт.
И перевёл код из видео на https://gist.github.com/Musin-Mihail
---
Недавно играл в Creeper World 4 и решил повторить движение жидкости.
Не сделать копию, а просто попробовать сделать хоть что-то. Вроде получилось.
Только субстанция ощущается очень вязкая и не получилось сделать волны.
Для первого раза нормально. )
---
Игра 2 Версия 0.0.5 https://musinmihail.itch.io/game2-webgl
Добавил базовые станции для подзарядки.
Если далеко от них отходить теряется связь и изображение исчезает. Позже добавлю помехи за место затемнения.
И добавил притяжение ресурсов к игроку.
---
Добавил конвейеры и внутреннее хранилище у игрока. И немного изменил интерфейс.
Ещё осталось добавить улучшения. Количество энергии, вместительность хранилища и мощность лазера.
И добавить бесконечную генерацию земли.
И можно будет выпускать версию 0.0.6.
---
Добавил 3 кнопки улучшения. Осталось цены прилепить.
Также добавлю увеличение радиуса притягивания ресурсов и очень редкий ресурс.
Текущая цель будет найти 10 штук данного ресурса.
Ещё нужно будет научится выравнивать элементы интерфейса.
Глобальные координаты есть только у кнопок и чёрного фона.
Все остальные элементы находятся внутри них. А у них уже локальные координаты.
Это удобно для отдельной кнопки, но не удобно делать выравнивания всех элементов интерфейса, если их размер отличается.
---
Нужно параллельно с разработкой логики начать создавать спрайты и звуки.
Но я даже не могу представить что я хочу получить в конце.
Я даже логику игры не могу придумать заранее.
Я пробовал записывать, пробовал создавать блок-схемы но ничего в голову не лезет.
Поэтому я сразу начинаю программировать и постепенно в процессе что-то появляется.
А тут даже не понятно с чего начать. Но и до конца разработки логики не хочется оставлять эти геометрические фигуры без текстур.
---
Я наконец-то изучил очередную банальную, но очень полезную вещь в программировании.
Передача переменных в метод. Чтобы совершать однотипные операции с помощью одного метода, а не плодить строчки кода для каждой операции.
На скриншоте я крашу объекты. И мне нужно было это сделать отключаемым.
Раньше я менял много данных в коде. Сейчас меняю только одну цифру.
И теперь я буду сокращать весь свой код. У меня много таких моментов.
Даже на скриншоте есть 2 одинаковых куска кода, только с разными переменными, а за кадром ещё 2 таких же. Их можно сократить.
И на текущий момент я добавил ещё один ресурс с редким шансом. Сейчас настраиваю шанс появления ресурсов. Чтобы вероятность менялась от глубины и прочих аспектов игры.
И добавил бесконечную генерацию земли.
---
В итоге, в одном скрипте сократил 130 строк кода до 80.
Меня даже сейчас радует не сокращения кода, а то, что для редактирования кода мне нужно изменить несколько символов в одном месте. а не прыгать по всему коду. Меньше шансов совершить ошибку.
И код выглядит лучше и понятнее.
Раньше я часто не решался изменять готовый код. Так как приходилось менять много одинаковых значений.
К примеру название тегов. Мне нужно изменить Silver на Red. И Gold на Yellow.
А у меня много строк с этим тегом.
Я очень рад, что дальнейшая работа будет проходить легче и быстрее.
А всё из-за нехватки знаний основ программирования. и синтаксиса языка.
Всё придёт, всему научимся.
В другом скрипте сократил 200 строк до 100.
И благодаря тому, что стало всё компактно, я нашёл логические ошибки в коде. Которые исправил.
---
Игра2 Версия 0.0.6 https://musinmihail.itch.io/game2-webgl
В этой версии не стал скрывать генерацию ресурсов.
Дальше я перенесу улучшения в отдельное открывающееся окно, чтобы разгрузить основную сцену от интерфейса.
И нужно будет придумывать новые механики. Чтобы был интерес изучать мир и развиваться в игре. А главное копать глубже.
И оптимизировать текущие элементы игры. К примеру если по "конвейеру" перемещается 2000 объектов, то игра тормозить начинает. Не удивительно, но может смогу исправить.
---
И нужно будет начать участвовать в соревнованиях по созданию игр.
Оказывается на том сайте их очень много. https://itch.io/jams
Это будет развивать мою фантазию и креативность.
Главное правильно понять ограничения для игры. Переводчик не всегда корректно переводит.
---
Начал создавать окно с улучшениями. Только странным способом.
Основу я делаю в Google рисунках. А в программе Krita делаю прозрачные участки.
Пока только начал. Просто делюсь своим новым опытом. : )
---
Закончил черновой вариант панели с улучшениям.
Добавил отключение и включение лазера при нажатии мышкой. И отключении лазера при активации панели улучшения и постройки зданий.
Страницу на патреоне я развивать не буду.
Так как страница с игрой имеет точно такие же функции и там есть сообщество.
https://musinmihail.itch.io/game2-webgl
---
Надо бы игре название придумать. Я примерно понимаю куда я движусь, поэтому есть 2 варианта.
Recycling the World. Переработка мира.
Recycling World. Мир переработки.
Может ещё что-нибудь придумаю.
Можно Recycling in the world. Но длинно и не соответствует игре.
Я там уничтожаю всё что вижу.
---
Заменил у ресурсов сферы на спрайты. Нагрузка на рендер вроде не уменьшалась при большом количестве объектов.
Хотя это уже на усмотрение игрока. Пусть собирает ресурсы и не оставляет валятся без дела.
Зато в процессе замены нашёл несколько ошибок. Часть ресурсов зависала под станциями и этого было не видно.
---
Текущие мысли по игре.
Думал оптимизировать управление с расчётом на мобильные устройства. Но снова себя остановил, не нужно распылятся. Моя игра будет только для компьютера.
Добавлю бота, который будет летать вокруг станций, копая землю и защищая базу от врагов.
И может ещё одного бота, который будет собирать ресурсы.
Ещё нужно создать систему которая будет автоматически распределять ресурсы между зданиями.
Сейчас у меня настроена доставка ресурсов на главную базу. Нужно чтобы система находила путь от главной базы до нужно здания, использую станции для перемещения.
В том числе эта система будет управлять ботами. Или боты будут управлять этой системой. В процессе решу.
Ещё я хочу в игру добавить элементы хорора. Чтобы игрок боялся копать.
Нужно будет заранее генерировать пещеры с врагами. Может даже врагов в самой земле.
Также мне нужно разобраться с освещением. Сейчас у меня спрайты видны, хотя освещения у меня в игре нет.
Мне нужно сделать, чтобы игрок не видел, что происходит вокруг.
Со светом я вроде начинаю разбирается.
Во первых я изменил шейдер материала на спрайт.
И заменил Ambient color с серого на чёрный. При этом без света всё чёрное.
Посмотрев это видео
Только мне не нравится, что спрайты нужно освещать сзади. Попробую нормализовать меш спрайта.
У спрайта нет меша. И в том видео нет таких проблем.
Вроде решил проблему. Пока материал у меня был стандартный, то видно его было только с одной стороны. Поэтому я разворачивал спрайт на 180 градусов.
Сейчас я шейдер выбрал специальный, для спрайтов. И развернул спрайт обратно. И всё стало как и должно быть.
Я постепенно отвыкаю от 3D. Но приходится переписывать код под 2D
А 2D физика отказывается работать также. Приходится снова всё изучать с нуля.
Там всё называется по другому и расположены в других местах. У твёрдого тела есть 3 вида взаимодействия. И гравитация не отключается, а меняется сила этой гравитации.
Но вроде разобрался. Осталось лазер в 2D перевести.
Ещё в 2D нет глубины. Нужно изучать некую матрицу. Чтобы ресурсы не сталкивались с игроком. Игрок с постройками и ботами. И прочее.
---
Физика в 2D ведёт себя более адекватно. Как минимум объекты не начинают трястись, когда их очень много в одном месте.
Видимо 2 координаты обрабатывать проще чем 3.
Но кажется что на обработку этой физики уходит больше фпс. В скомпилированной игре 20 фпс на третьем скриншоте. И я заметил, что земля опускалась вниз. Впервые такое вижу.
И уже полегче переписывать код по 2D, начинаю что-то понимать. Осталось визуальную часть подправить с лазером, и станции перевести в 2D.
Тогда можно будет матрицу коллизий изучать.
Я ещё подумал, что камера сдвигает, но это вся земля двигается. И только земля...
Очень медленно и нестабильно.
По крайней мере при 20 фпс.
Куски земли не связанны меж собой ничем. Кроме префаба. и сдвигаются они одновременно на одинаковое расстояние в независимости от их размера...
Повторить это в программе пока не получилось. Буду пробовать ещё.
Буду считать это погрешностью в обработке изображения. Типа оптического обмана.
Не буду на этом заострять внимание. Так как в теории движение земли невозможно. На них нет физического тел.
Кажется что ресурсы тоже начинают двигаться из-за смещения земли. Но это не точно.
---
Я только что сообразил использовать поиск в программа Visual Studio Code.
До этого я почему-то вспоминал в каком скрипте я использовал нужный мне код, искал файл, открывал и копировал.
Но и сейчас я держу часть кода в отдельном файле, которые я использую не очень часто, и не получается пока запомнить.
А сейчас зная часть кода я могу найти подобный у себя в скриптах через поиск.
Очередная банальная вещь, которой я раньше не пользовался.
Ещё я тренируюсь писать текст всеми пальцами. Просто пытаюсь печатать весь текс таким способом. Пока получается медленно, пальцы на автомате тянутся не к своим буквам, но всё ровно становится быстрее.
---
Интересное наблюдение. Если навесить на объект 2D коллайдер, и двигать объект через transform.position, то падает фпс.
Потому что он пытается найти твёрдое тело на объекте и постоянно удаляет и создаёт коллайдер.
Поэтому нужно вешать на объект твёрдое тело и двигать это твёрдое тело.
Я много времени потратил чтобы это понять. Так как в 3D такого нет.
Это очень странно...
Сейчас я просто двигаю спрайт по сцене и на это нужно писать дополнительный код и добавлять дополнительные компоненты на этот спрайт.
Сейчас у меня падает фпс на сроке Physics2D.FindNewContacts. Решения пока не нашёл.
Я думаю вообще отключить физическое тело и коллайдеры. И сделать создание и удаления ресурсов между станциями. И просто сравнивать координаты.
Сейчас у меня ресурсы пролетают весь путь по всем станциям.
Много будет уничтожений объектов. Но кажется это будет эффективнее.
Хотя можно будет создать пул объектов. Если будет уменьшение фпс
Хотя может получится оставить так, только за место коллайдеров использовать сравнение координат.
Без сильной переделки кода. И ресурсы продолжат пролетать весь путь.
Нужно пробовать.
У меня даже начинает вырисовываться в голове будущая система распределения ресурсов.
Где будет массив всех зданий и можно будет проверь все цепочки, чтобы найти нужное здание.
На полёте этих ресурсов и попробую протестировать.
---
Создал сообщество Вконтакте https://vk.com/unity_gamedev
Буду постепенно оформлять и привыкать к новой площадке.
---
Начал добавлять пещеры в генерацию. А для этого приходится генерировать сразу большие куски карты. При этом создаётся много объектов за пределами пещер. Из-за рендера падает фпс.
Сейчас переделываю генерацию, создаю чанки и скорей всего буду объединять меши. Но придётся возится с текстурами.
Но появилась идея генерировать пещеры вторым слоем. А первый, основной слой уничтожался, при прикосновении со слоем с пещерами.
Тогда не будет создаваться много объектов и пещеры будут генерировать красиво. и без лишней генерации за пределами пещер.
Объяснил непонятно, но мне понятно. : )
Сейчас пещеры генерируются возле игрока. Но и земля за пределами тоже, чтобы фпс сильно не падало, в отличии от генерации всей карты целиком. Но и так фпс страдает.
А в моей новой идеи пещеры будут генерировать сразу на всей существующей карте, но без лишней генерации за пределами этих пещер.
Нужно пробовать, тестировать. А то объединение мешей тоже съедает фпс. Не хочется добавлять её в игру.
---
Реализовал генерацию пещер через второй слой.
Первичная генерация чанков отнимает много фпс.
Сейчас буду оптимизировать этот процесс.
---
У меня ощущение, что я переписывал код раз 10, чтобы добиться стабильных 60фпс при постоянном движении.
Но главное нашёл и всё работает как я хотел.
Можно даже ещё тайминги понастраивать, чтобы было ещё лучше.
сейчас у меня куча закомментированного кода и переменных.
Нужно чистить код, чтобы всё красиво выглядело.
Я уже понемногу начинаю добавлять технические комментарии в свой код.
Начинаю путаться и долго искать нужные куски кода.
---
Добавил на сайт новую версию игры Recycling the World v0.0.7
Добавил темноту, окно с улучшениями.
И исправил несколько ошибок.
https://musinmihail.itch.io/recycling-the-world
---
---
Добавил в пещеру врагов, которые отнимают энергию у игрока при прикосновении.
И увеличил генерацию ресурсов вокруг пещер.
Всё это ещё буду настраивать, но основа готова.
---
Скачал ассет с 2D светом. https://assetstore.unity.com/packages/tools/particles..
Нашёл там всего 1 маленький скрипт и решил, что я в нём быстро разберусь.
Оказывается там dll файл. С этим расширением я никогда не работал.
Всё что я смог, это с помощью программы jetbrains.dotPeek открыть и вытащить все файлы https://www.jetbrains.com/decompiler/.
Но нужно ещё научится их упаковывать обратно.
Судя по описанию, эта программа умеет это делать. Но у меня уже мозги кипят.
Сейчас обновляю Visual Studio. Вроде через него что-то можно сделать.
Как минимум нужно изучить весь код и повторить его самостоятельно. Так будет эффективней.
И скорей всего в текущем коде много всего лишнего, что мне не нужно.
Как я понимаю, это не подходит для движущегося объекта. Каждое перемещение делается перерасчёт.
Скрипт собирает все объекты внутри своего коллайдера и сортирует их. А у меня куча мелких объектов.
Ассет нормально работает. Но я хочу уменьшить частоту обновления. Для этого мне нужно отредактировать код.
---
Оказывается в Unity есть экспериментальная система 2D освещения...
И я это узнал благодаря ролику на Ютубе.
Всё работает и без единой строчки кода. Только эта система поломала рендер моих существующих текстур. Но думаю я это смогу решить.
Но не сегодня.
Визуально это не отличаете от скаченного ассета, но тут я могу редактировать скрипты.
И работает стабильнее.
Всё равно сижу и играюсь. С текстурами проблем нет.
Спокойно заменил на игроке материал на стандартный для спрайтов.
И сделал луч от игрока. Добавил скриншот.
Эта система разрабатывается с 2018 года.
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@10.2/changelog/CHANGELOG.html
Последняя версия 7 декабря 2020
---
https://musinmihail.itch.io/recycling-the-world
В новой версии были добавлены пещеры с ресурсами и врагами, которые отнимают энергию у игрока.
И заменил освещение на динамическое.
Лучше скачать версию для компьютера, Веб версия работает плохо. Скорей всего из-за света.
---
Планировал придумывать что добавить в игру.
И решил добавить организации в свой код.
К примеру у меня в одном скрипте уже 30 глобальных переменных.
И я зачем-то в него исполняемый код начал добавлять.
Сейчас мне нужно все свои скрипты разделить на более мелкие, чтобы меньше путаться, какой скрипт за какие действия отвечает.
И для каждой категории сделать свои скрипты с глобальными координатами.
Лучше всё сделать красиво сейчас, чем разбираться во всём в будущем.
Хотя в начале своего пути, я не хотел создавать куча скриптов. Но сейчас я научился с ними взаимодействовать.
добавлю сюда скриншоты текущей ситуации. К примеру у меня есть неотсортированный файлы, которых становится больше.
И много файлов и переменных, которые называются не так как должны. И уже сейчас это иногда путает меня.
Но я до нового года другими делами пока займусь.