30

Сперва добейся челенж

Я тут начал советовать советы всякие и мне резонно заметили, чтоб я сперва сам чото сделал, прежде чем умничать. К сожалению в будни было много работы и особо сил не было заниматься этим. Так минут по 20-30, поглядывая ютубчик и поигрывая в шахматы. В субботу сдохла винда :D поэтому рабочее настроение благополучно не появилось. В общем, на всё про всё часов 7-8 работы (пополам с ютубом и шахматами) и получился прототип платформера

Что есть: генерация уровней, скилы движения и их смена, и то и другое расширяемо, можно нагенерить любых уровней, каких душе угодно, путём добавления префабов новых платформ. Добавление скилов тоже достаточно просто, нужно только дописать логику для конкретного скила. Заложен фундамент под управление платформамии (например: замедление времени, особые скилы для конкретных платформ (нужно дописать только логику конкретной платформы)).

Счет, жизни и юайку не прикручивал, потому что поленился. Да и не такая это сложная задача, к тому же больше имеет отношение к балансу, а не к разработке. Точно так же и про графику. Сунуть вместо куба персонажа и крутить ему анимацию особого труда не составит.

Управление сейчас: "D" - движение, "W" - смена скила (белый квадратик со стрелкой на видосах это скил движения вперёд. Есть ещё кувырок и прыжок ).

При падении уровень перегенеривается с помощью справочной информации из соответствующего объекта. в проекте. В которой можно указать кол-во платформ для генерации уровня, какие именно платформы будут использоваться при генерации. Их веса сейчас захардкожены (первый в листе используется чаще и по ниспадающей), но нет никаких проблем вынести развесовку в конфигурационный файл. При достижении зелёной стрелочки геймконтроллер повышает уровень сложности и ищет в списке конфигурационных файлов соответствующий текущей сложности, с помощью которого генерит новый уровень. В принципе и скилы движения можно вынести в точно такой же конфигурационный файл, но в данном случае хотелось добавить разнообразие решений. Таким методом можно, в том числе, реализовать телепорт. Да и всё что хочешь. Логике всё равно, что будет делать скилл :)


гит проекта для тех, кто хочет посмотреть как это вообще "проект игры на юнити, я никагда нивидил": https://github.com/MrMouseSE/Platformer

билд погонять с 9ю уровнями (после 9ого сброс на 1ый): https://github.com/MrMouseSE/Platformer/blob/main/build.zip

з.ы. баланса нет, можно заспамить кнопку движения и летать ^_^

Собственно, к чему я это всё?

Сперва добейся челенж Unity3D, Обучение, Компьютерная помощь, Gamedev, Видео, Мат, Длиннопост

Посмотрев на последние посты пикабушников в группе я в несколько шоковом состоянии, если честно. Люди тратят просто безумное количество времени и сил, реализовывая свои хотелки, зачастую вопреки здравому смыслу и логике. Стандартная ошибка начинающего: "ввязаться в бой, а там видно будет" и непонимание "у кого и что спросить" толкает людей к совершенно необдуманным поступкам. В итоге труд, который тратится на создание тривиальных вещей просто поражает воображение. Вполне допускаю, что для этих людей важен ПУТЬ, а не достижение цели, но (вроде бы) декларируют они конкретные вещи (а не бесконечные прогулки по граблям).

Я честно не понимаю в чем проблема, по моему мнению - учебного материала просто невероятное количество на сегодняшний день. Возможно как раз в этом и проблема для кого-то (не знает с чего начать). Возможно проблема в незнании как поставить вопрос. Возможно, что причина - нехватка компетентного специалиста под боком, у которого можно получить консультацию. У каждого могут быть свои причины. Вполне допускаю, что кому-то не заходят форматы видеообучающих материалов и ЖИВОГО ФИДБЕКА, когда можно задать вопрос непосредственно по своей реализации и получить конкретный ответ, а не пример на "кубиках".

Так вот:

Я предлагаю всем желающим менторство по всем базовым вопросам, типа "с чего начать делать такое", "как мне сделать вот это" и т.п. Но только конкретным вопросам, а не всякое пространное "хочу сделать заебись нихуя не делая".

В чем я могу помочь:
-инструментарий Unity
-моделлирование
-эффекты
-шейдера
-программирование (клиент/эдитор)

-архитектура проекта (программная на базовом уровне, чтоб можно было расширяться, структура ассетов)

Имеется коммерческий опыт во всём этом (тех.худ 6 лет, моделлер 4 года. Мобилы, Юнити)
-с рисованием могу подсказать инструментарий :D

не ко мне:

-клиент-серверное программирование

-баланс

-маркетинг

В общем - чисто технические вопросы по клиентской разработке.

Зачем это мне:

Я просто очень хороший человек У меня есть чисто шкурный интерес. По роду деятельности мне приходится обучать новеньких и смежников из отрасли всяким азам (и не очень азам) профессии, поэтому всё больше становится необходим именно такой опыт "как обучать людей".

Какой формат:

Самый удобный для меня формат - менторство. Т.е. консультация по какой-то конкретике. Например: формальное описание задания (дизайн документ в любом виде, даже в зачатачном, главное, чтоб не на словах, типа "ну тут вот это туда, а это сюда, но я не знаю, не думал, ваще вот"), либо ревью проекта ну или его зачатков. Для связи и передачи взад-назад файликов можно использовать дискорд (как-никак у нас тренд на удалённое обучение :D ).

Прозрачность:

В качестве доп стимула и большей открытости и пользы для сообщества - буду постить раз в какой-то промежуток времени развернутый отчет о проделанной работе и прогрессе, который получился в результате сотрудничества (с позволения автора), ну либо сам автор пусть постит, собирает плюсцы ^_^


Ну и чтобы всё это не сочли за рекламу - все контакты для связи в комментах, если будет заинтересованность. Ну или топите пост, если никому не интересно. В конце концов: изобретать велосипед - это народная забава разработчиков!

Сперва добейся челенж Unity3D, Обучение, Компьютерная помощь, Gamedev, Видео, Мат, Длиннопост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

Эти кубы и их поведение очень далеки от той механики, которая должна получиться.

Еще проблемы начнутся при прикручивании анимации.

Главная моя проблема всегда была - лаги. Нет той плавности, которую я вижу в подобных играх. Не знаю почему, изменение приоритета приложения мало что дает.

раскрыть ветку (25)
0
Автор поста оценил этот комментарий

предположу что ты попал в метод update, который может провисать при недостатке fps, юзай fixedupdate - вроде так.

раскрыть ветку (17)
0
Автор поста оценил этот комментарий

У меня вообще все было на чистом С и OpenGL. Наблюдались периодические рывки, например если весь экран перемещать. Не помню уже, давно было. В посте прям на первой гифке очень заметны рывки при движении куба, причем это наверно с input проблемы, так как автоматический блок двигается плавно. А при движении экрана в самом конце последнего ролика тоже заметен лаг. Может это захват картинки плохо отрабаотал?

Короче все всегда упирается в графику и в то что я очень медленно рисую. Потому что кубы это отстой, хочется чего-то нормального.

раскрыть ветку (16)
0
Автор поста оценил этот комментарий

на гифках нет рывков, которые не были специально сделаны ^_^ на первой - это способ перемещения куба. При нажатии кнопки движения - тебя пинает в право с такой-то силой и ты замедляешься об пол. На последней - обычная работа лерпа, чем дальше двигаться нужно - тем резче старт. Это не баг, так и делалось специально. Никаких рывков из-за лагов нет в проекте.

раскрыть ветку (15)
0
Автор поста оценил этот комментарий

А вы глубоко в юнити разбирались? Он основан на opengl или directx? Если opengl то какой версии? Если используются расширения новых версий, как быть с их не поддержкой на старом железе или же глючным отображением? Как юнити на уровне opengl рисует ваши квадраты (сцену) именно в применении 2д, где высота везде одинакова? Допустим квадратов много, миллионы в кадре. Как он поступает? Допустим перебирает их каждый. Затем для каждого объекта классический способ это нарисовать 4 вершины, получив 2 треугольника, причем как будет проходить грань зависит от последовательности вершин. Но это долго для процессора, засылать каждый раз каждую вершину. Есть другой способ, использовать list из 4 единичных вершин, а потом использовать матрицу трансформации и растянуть как надо. Или третий способ сразу через шейдеры. Просто если брать юнити и начать с ним разбираться, я не могу отделаться от ощущения что это черный ящик и я не понимаю как он работает внутри.

раскрыть ветку (12)
0
Автор поста оценил этот комментарий

вся отрисовка через видяху идёт, в шейдер улетает инфа с меша и всё, юнити ничо уже не делает. HLSL дальше работает. Именно рисованием юнити не занимается.
https://docs.unity3d.com/Manual/SL-ShadingLanguage.html

раскрыть ветку (11)
0
Автор поста оценил этот комментарий

А можно пример шейдера рисующего квадрат?

раскрыть ветку (10)
0
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (9)
0
Автор поста оценил этот комментарий

Все еще не ясно каким образом юнити передает в шейдер координаты 4 вершин?


А юнити позволяет работать с opengl? Что если я хочу делать что-то для Linux?

раскрыть ветку (8)
0
Автор поста оценил этот комментарий

у вас вопросы довольно эмм... прикольные... они как бы бессвязные немношко. Можно сбилдить на openGL или на vulkan или на директХ. Юнити передает в шейдер вертексы. Юнити - это 3д движок. В движке есть возможность оперировать мешем (хранится либо в ассетах (просто структура координат вертексов и сопуствующей информации, либо в форматах моделей. По сути тоже самое, движок использует тулзы для экспорта меша из формата типа *.fbx *.blend *.ma). Меш хранит в себе координаты вершин, вертексный шейдер получает на вход структуру вершин с их информацией со сцены (за это отвечает компонента meshrenderer. собственно вот: https://docs.unity3d.com/ru/2019.4/Manual/class-MeshRenderer... ) и обрабатывает, передает во фрагментный и отрисовывает на экране. Ничего там нового нет, как и любое другое приложение работает. Ещё раз - это 3д-движок, там 2д нет. Там есть полигоны плоские, на которые текстура проецируется.

раскрыть ветку (7)
0
Автор поста оценил этот комментарий

Ну это два разных вопроса. Независимых. Насколько я помню directx работает только с windows, а windows только с пк архитектурой. Ну может сейчас уже не только, но что-то мне openGL ближе. Вот я и спросил можно ли переключить юнити на openGL.

В движке есть возможность оперировать мешем

А вот тут подробнее можно алгоритм? Допустим в юнити есть некоторый массив данных, пусть он называется меш. Этот массив содержит как минимум координаты каждой вершины каждого объекта на сцене. Объекты на сцене допустим это миллион плоских квадратов, у каждого по 4 вершины. Юнити берет и циклом закидывает 4 раза координаты этих вершин в видеокарту? А потом переходит к следующему квадрату и все повторяет миллион раз? Или же алгоритм другой и меш это, например, куча квадратов, на которых, например, наложен один и тот же шейдер и передаются вершины уже в цикле N*4? Или же алгоритм другой и можно как-то сократить "затраты" на передачу видеокарте вершин каждый раз? Мне бы посмотреть на функцию которая закидывает вершины в directx или ее код недоступен для просмотра?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Просто в opengl была такая штука как list, можно было заранее загрузить некоторый список вершин и передавать не их все каждый раз, а один раз вызвать list по его номеру.

Можно было загрузить все 4 вершины квадрата в list и вызывать его отрисовку одной командой, чем ускорить работу СPU существенно в случае если одинаковых квадратов миллионы.

Не знаю есть ли что-то подобное в DirectX или появилась какая-то более продвинутая технология взаимодействия CPU-GPU.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Так сложно оценить, нужны тесты на перемещение экрана.

А что за эффект такой, что кубик будто-бы подпрыгивает при перемещении экрана и под ним то и дело белая пиксельная полоса появляется?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

в силе, которая пинает бокс есть вертикальная составляющая. Он приподнимается над поверхностью. Физика работает не очень точно, но такое как раз-таки только на кубах можно заметить, которые встык должны прилегать. Можно избавится подгонкой коллайдеров.

0
Автор поста оценил этот комментарий

я не очень понимаю вопрос, если честно. Какого рода проблемы с анимацией имеются ввиду? О_о Может есть какая-то более конкретная формулировка?

раскрыть ветку (6)
0
Автор поста оценил этот комментарий

При резкой смене действия нужно резко прервать анимацию и запустить другую и получается дергания и прочая ерунда.

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

для этого есть аниматор из коробки, там блендится анимация, вполне ладом.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

А есть статьи как это делать?

раскрыть ветку (3)
0
Автор поста оценил этот комментарий
Предпросмотр
YouTube8:29
раскрыть ветку (2)
0
Автор поста оценил этот комментарий

А если я не умею в 3д моделинг, есть аналогичные методы для 2д анимации? Ну типа там морфить всякие растровые изображения, которые нарисованы по старинке, художниками на бумаге в виде кучи кадров?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

есть сплайновая анимация из коробки. Можно спрайтшиты использовать (куча кадров, нарисованная художниками).

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку