Ответ: I.D.S. MONSTERS
Код:
//расчёт размера сетки исходя из уровня угрозы Код:
public static class PlayerKarman PS. нэйминг у тебя шикарный |
Ответ: I.D.S. MONSTERS
Цитата:
Это первый мой проект за десятилетие, Первый проект на юнити, первый на си шарп. Я в процессе изучения, разрабатываю как могу. Последнее что я кодил, это на хорсе под враппером в блитц физику и пп для ртс типа старкрафта 2, На бэйсике. Статический для того, чтобы иметь глобальный Скриптовый файл без привязки к объектам. Знаю, что можно объявить команду, Чтобы скрипт не удалялся при смене сцен, такой Способ тоже буду юзать, но в данный момент Мне нужно так как есть. Нэйминг у меня всегда такой был ))) Главное, что мне всё понятно. |
Ответ: I.D.S. MONSTERS
Цитата:
Это оператор для разбора случаев разных значений одной переменной. PHP код:
PHP код:
Ну в принципе в программировании действует правило "Если работает, то ты уже молодец" |
Ответ: I.D.S. MONSTERS
Цитата:
по этому многого не знаю. Ну как говорится, был и был в блитце ) Так посмотреть на код, та же жопа, только вид сбоку. Этакий миницикл. Мне важно понять, в чём преимущество над моим папуасским говнокодом? Что тут последовательно выполняется проверка на значение, что в моём случае то же самое. Или я что-то упускю из виду? А то все эти IF в апдейте всё равно по очереди исполняются. Особой экономии строк тоже не вижу, наличие break сводит её на ноль. Наверно свитчи нужны для каких-то более сложных конструкций? Просто пока я вижу смысл свитча в том, чтобы остановить последующую проверку, если мы нашли уже нужное число. Однако в случае поиска среди семи значений, это сомнительная экономия вычислительной мощности. Я думаю она нужна, для каких-то расчётов проводящихся в огромном количестве одновременно. В моём случае это разовая проверка в скрипте. Но я думаю это знание мне может в будущем пригодится для каких-либо расчётов в скриптах спавнящихся монстров, так-как монстров будет много на карте, следовательно скрипты будут часто перебирать какие-то переменные. Добавил: вспомнил где я в блитце использовал свитчи, аш 13 лет назад! С их помощью я разбивал игру на сцены, нужные функции запускались при определённом значении переменной, как раз через "case", чтобы делить игру на стартовое меню, и игровой уровень. В юнити такая нужда отпала, и я собственно благополучно забыл о данной фиче ) |
Ответ: I.D.S. MONSTERS
Так ребяты. Я тут некоторое время отдохнул,
думаю сами заметили, и вернулся к делу. Два дня кодил. Визуально изменений мало, ещё меньше в геймплее, однако внутренне много что перетряс, что-то переделал, что-то с нуля написал, что-то добавил. Что-то добавляешь, потом другое работать перестаёт, там всё переделываешь, ну сами знаете как бывает. Короче в данном апдейте: 1. Квады монстров в сцене боя теперь тоже смотрят на камеру. 2. Теперь монстр с определённым шансом может позвать себе в подмогу на сцене боя от 0 до 2 таких же монстров. 3. Теперь можно останавливать время например для перехода на элементы интерфейса, чтобы можно было спокойно подумать что нажимать, для следующего пункта это используется. 4. Появились кнопки, которые спрашивают нас хотим ли в бою мы быть в стороне, или участвовать лично. Ну и собственно вся эта система работает, за исключением того, что я функцию создания самого персонажа ещё не добавил. 5. Теперь в сцене боя управляемая камера, которая ориентируется также в размерах сгенерированного уровня, и не выползает за него. Билда: https://yadi.sk/d/V5BwvRZBdpB6EA И, я даю вам возможность в данный момент поковыряться в самом проекте: https://yadi.sk/d/5dgYQ7_Vps5tEA Потрошите, изучайте, используйте в своих проектах интересные вам функции. |
Ответ: I.D.S. MONSTERS
Ас-саляму алейкум товарищи атеисты, программисты, тунеядцы,
и мазохисты, и прочие кто бы вы там ни были, всем здрасте! В общем спешу сообщить, у меня был секс, и ещё какой! Юнити отымел мой мосг во всех позах камасутры. А раз я здесь, значит я его перетрахал! Короче, что за жёпа меня постигла? Дело в том, что мой предыдущий код генерирования меша образующего сетку - говно. Как оказалось, создавалась нифига не сетка, а квад из двух треугольников, растянутый вершинами по площади игрового поля! Я тут значит сделал двухмерный массив сетки непроходимости, и решил значит в меше непроходимые квадраты не создавать. а тут через боль и маты выяснилось, что у меня нихрена не получается, по тому, что это не сетка, а два треугольника! Это был поистине шок! А всё дело в том, что моя система создания сетки опиралась на опыт конструирования оной в блитце, но у нас же юнити, и вертел он знаешь ли наш предыдущий опыт на детородном органе! Эта тварюга вместо генерации новых вершин и треугольников, в каждый момент когда нужно было создать ячейку сетки, просто переписывала данные предыдущих вершин и треугольников, и растягивала эти четыре вершины. Я когда до этого допёр, очень хотел обоссать лицо разрабам юнити за создание такой неудобной системы процедурной генерации так сказать. Дальше было больше! Я относился к "Vector3" как к хранилищу координатных точек, и собственно при построении двух треугольников использовал всего 4 точки, ну ибо нафига больше, если точки пересекаются. Так вот при создании новой системы генерации сетки я столкнулся с жопой фантастических масштабов, у меня чё только не генерировалось: лесенки, заборы, многоугольные геометрические фигуры, или дроблёное поле. Пришлось атаковать американские ресурсы через гугол, чтобы вычитать что за хрень творится с "Vector3". И чё я выяснил? А "Vector3" это нихрена не хранилище точек по трём координатам, а хранилище именно векторов, а вектор это не точка нихрена, и по этому у меня генерировалась всякая шняга! Решить проблему можно было переводом "Vector3" из векторной системы, в точечную через "Matrix4x4.MultiplyPoint", или Matrix4x4.MultiplyPoint3x4, но я послав на три всем знакомые буквы это великолепное развлечение от разработчиков юнити, пошёл другим путём. Я просто на 2 треугольника создаю теперь 6 вершин через тот же банк векторов "Vector3", и всё работает. В общем текст короткий, но разобрался я в этом дерьме как вы понимаете не так быстро, как описал суть проблемы. В общем вот прототип теперь точно рабочего кода , пока что он генерирует сетку по размерам игрового поля, далее мне нужно будет привязать это к системе определения, какого размера сетку строить, а после научить код не рисовать квадраты там, куда наш монстр не может пойти, опираясь на его максимальный радиус движения, и массив непроходимости: Я уже говорил, код пишется для того, чтобы потом его переписывать. З.ы. А ещё юнити задолбал крашиться, выходит из строя до переустановки. Вёжл Студия от мелкософта тож задолбала, кончается пробный период, логиньтесь говорит, я логинюсь, а там тоже краш (логинится похоже через старый ИЕ, в котором нет нужных функций, у меня семёрка). Приходится её туда-сюда переустанавливать (студию). В общем разработка этой игры мне даётся с большой болью, во времена дарк бэйсика, блитца, и хорса, у меня таких проблем не было. |
Ответ: I.D.S. MONSTERS
Вложений: 1
Так, я не пропал! Ни на что не забил, и ничё не забил.
Я просто больше играю в игры, чем кодю. Короче, я всё-таки реализовал новую версию процедурной генерации визуализации сетки хождения монстра полигонами. Она сейчас плотно связана с матрицей проходимости, и с радиусом максимального хождения монстра (например 5*5). Билды пока не будет, так-как всё это дело снова надо привязать к клику по монстру, это в процессе. Столкнулся с массой сложностей, которые пришлось решать на ходу. Например, из-за того что я конструирую сетку хождения монстра в цикле через FOR, ячейки создаются по очереди, и чтобы мне в функции создать возможность проверки на то, стоит ли мне в нужных квадратах рисовать полигоны, или нет, мне пришлось два двумерных массива координат, перегонять в одномерные, т.е. переводить из координатной системы, в номерную, где номер, это номер ячейки сетки игрового поля. С переводом координат в номера ячейки матрицы проходимости особых сложностей не возникло, но вот вообще высчитать радиус прорисовки вокруг монстра, а после перевести эти координаты в номера ячеек было той ещё трёхдневной болью. В генерации этого меша на данный момент задействовано пять массивов, и девять различных циклов, это довольно сложная система, и рабочая. Испытания показали, что например меш размером в 40.000 клеток, где у нас 80.000 треугольников, генерится довольно долго, по этому для эпических монстров, которые ходят в любую точку карты, я такую систему использовать не буду. Но вот меши размерами например 25 на 25 генерятся моментально, но это вообще весь размер игрового уровня при битве с монстрами аш пятого уровня угрозы, даже больше, короче для стандартных битв всё годно, для управления эпиками сделаю другую систему, об этом пока и речи не идёт у меня. В общем всё зер гуд, результат моих мучений здесь, комментов в них мало: Ну и скриншот того, что сейчас генерится вокруг среднего монстра, он у меня сейчас условно считается выделенным, пока без текстур, и специально чуть приподнято: |
Ответ: I.D.S. MONSTERS
Да, забыл сказать, теперь на очереди у меня система управления
перемещением монстра. Пока не знаю, ходить как в шахматах, или сделать чтобы он как в героях двигался медленно в нужную область используя поиск пути, первый вариант реализовать в 100 раз проще, а на геймплей это никак не влияет, бои пошаговые. П.с. на разработчиков No Man's Sky после своего генератора, смотрю как на мифических зодчих всемогущих, не смотря на то, что их игра полное говно, у них генерируются целые планеты, с ландшафтами, пещерами, морями, ресурсами, растениями, это что-то невероятное.Правда мир у них воксельный, а не полигональный. |
Ответ: I.D.S. MONSTERS
Вложений: 1
Это какая то война с юнити!
В общем прикрутил новую систему к клику мышью по монстру, всё прекрасно работает. Далее в американских интернетах вычитал, как программно создать коллайдер по форме меша, прикрутил. Ну и попытался сделать перемещение монстра в точку пика на его графической сетке проходимости. Мучился много, непонятно почему луч в половине случаев простреливал сквозь казалось бы цельный меш. В общем рыл долго в направлении коллайдеров, всё там перешуршал, ничего не помогает. И тут вдруг я начинаю переключать режимы рендера в сцене, и о чудо ёмаё. Оказалось половина треугольников развёрнута не в ту сторону, и видно это только в типе рендера "Render Paths", в обычном рендере сцены, и игровом рендере меш рисовался как правильный, скрин в посте выше, а вот и причина моей ночной головной боли: |
Ответ: I.D.S. MONSTERS
Вложений: 1
Заменил местами две вершины в массиве, всё встало в норму.
наконец-то можно поспать, а в другой раз уже делать перемещение монстров. |
Ответ: I.D.S. MONSTERS
Итак комрады, билда подъехала!: ТЫЫЫК
Добавлена возможность управления перемещением монстра. Добавлены функции изменения состояния квадратов сетки проходимости (грубо говоря куда шагнули, там квадрат стал непроходимым, откуда ушли, тот стал проходимым). В данный момент временно отключена система случайной подмоги монстра, вы можете войти в сцену боя только с одним монстром. Как управлять? Лкм на монстра, лкм в точку перемещения в радиусе доступности. Прошу тестировать, по перемещаться столько, сколько вам будет не влом. Отловка багов занимает в сотню раз больше времени, чем разработка функций, которые потом пораждают эти баги. Я оттестил и отшлифовал по максимуму, но баги вероятно могут ещё быть. Жду отзывов. |
Ответ: I.D.S. MONSTERS
Вложений: 2
Сразу скажу, что запускал через вайн. Комп старый, на интегрированной видюхе.
1. низкий фпс, на глаз не больше 5 - 10 Я понимаю что в игре графон и все такое, но старые игры через тот же вайн у меня работают хорошо. 2. При клике по монстру появляется интерфейс без текста. В первый раз игра зависла на этом моменте. 3. В бою я почему-то управляю не своим персонажем, а монстром. Когда я довел монстра до своего персонажа, то последний начал медленно улетать в горизонт. 4. Игра закрывается только убийством процесса. Хорошая игра и бои интересные. |
Ответ: I.D.S. MONSTERS
Щас на скорую руку фрапсом посмотрел, в 60 фпс
упёрлось, это ограничение самой проги. Наверное по тому, что монитор 60 герц, по факту макс скорость выше). Чёт у тебя с компом или дрвоами, у меня игра летает. Я на своей машине тестировал игру, выводил на экран 2000 монстров, и при этом одновременно 20 монстров каждую секунду удалялись, и 20 создавались, и фпс не проседал. То что текста нет, я хз, стандартным методом юнити текст выводится. То есть стандартные кнопки на стандартном канвасе, слова выводятся встроенным в кнопки в юнити текстом. В бою ты и должен управлять монстром, такая билда. То что куб улетел это нормально, хотя я монстрам коллайдеры подрезал вроде не должны были задевать уже, но это пофиг, не то тестим щас ) Ладно, жду отзывы и других тестеров. У меня комп Core Quad Q8200, 8гб ОЗУ, карта GF1660 SUPER, игра летает. Комп слабый как видите, если у вас ещё хуже (куда уж хуже, моему процессору 12 лет), то про fps можно вообще не писать )) |
Ответ: I.D.S. MONSTERS
Коллега щас затестил. i7, 16 гб озу, GF1070.
144 FPS выдало, это максимальаня герцовка монитора его. Чёто у тебя антон проблемы каике-то с железом или дровами. |
Ответ: I.D.S. MONSTERS
Цитата:
На низких настройках фпс не менее 30 (по ощущениям около 60) Недавно прошел The Matrix: Puth of Neo. На стандартных настройках фпс так же не менее 30. Хоть игра и древняя, но там и анимация и отражения и частицы и эффекты Мне кажется, проблемы не у меня. |
Часовой пояс GMT +4, время: 21:53. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot