Понедельник, 23 Мая 2022, 06:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » drcrack [2639]
Результаты поиска
drcrackДата: Четверг, 05 Октября 2017, 20:53 | Сообщение # 2561 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
Кто ж делает ставки, когда все уже вскрылись.

А ты тред читай сверху вниз, а не наоборот)
drcrackДата: Четверг, 05 Октября 2017, 20:48 | Сообщение # 2562 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
Откуда такая информация.

Официальная документация, приколись?
https://docs.unity3d.com/Manual/ExecutionOrder.html
Normal coroutine updates are run after the Update function returns.

Цитата
А что если в update применяется процессор видеокарты

Не применяется
Весь твой код включая Update (и корутины) выполняется на CPU в одном потоке
Рендеринг идет самым последнием этапом после Update, LateUpdate и других вещей

Цитата
и он не успел выполнится, и начнется заного выполнятся?

Вообще-то там бесконечный цикл и каждый кадр выполняется одна его итерация

Цитата
ты чего drcrack, ты сам попросил вычислить каждый кадр милион раз

Ну так вычисли.) Что-то у тебя пока не получилось сделать корутину "в отдельном потоке" без снижения фпс)
Вот когда получится тогда и поговорим

И вообще, мы спорим на полтос или как?


Сообщение отредактировал drcrack - Четверг, 05 Октября 2017, 20:50
drcrackДата: Четверг, 05 Октября 2017, 20:32 | Сообщение # 2563 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
вызвать coroutine не накладно, потому как возвращает мгновенно результат.

Создается новый обьект (корутина) в куче, 60 раз в секунду, это не то чтобы накладно, это просто криво (хотя очевидно медленнее чем просто цикл)

Цитата
А вот вичислять все конечно затормозит. 60 кадров в секунду, создастся отдельный поток, который будет миллион раз вычислять корень. 60 потоков в секунду

Никаких потоков не создается, в моем варианте вообще 1 корутина для всего, это ты зачем-то запускаешь их каждый кадр

Цитата
Ты сам знаешь, от чего тормозить будет.

А вот ты не знаешь, но почему-то очень уверен что знаешь.
Давай может на 50 баксов поспорим что корутины в основном потоке работают?
drcrackДата: Четверг, 05 Октября 2017, 20:18 | Сообщение # 2564 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Оно будет работать, но станет намного медленнее чем было, потому что запуск корутины это более затратная операция чем просто цикл, и делать это 100 раз в секунду ради 1 итерации это как-то глупо.

Цитата
drcrack, это может повлиять на fps, если будут затрачиваться процесорное время на вычисление, когда нужно затрачивать на отрисовку.

О, ты почти понял. Раньше ведь совсем по-другому говорил))
Код
/* создай отдельный поток, чтобы он проверялся не в кадре, а в потоке, так он не будет замедлять покадровое обновление */

Тебе осталось понять совсем немного:
1) все активные корутины выполняются каждый кадр после всех Update
2) тяжелые вычисления в любом случае влияют на фпс
3) все что можно сделать корутинами, можно также сделать в update и фпс не изменится
drcrackДата: Четверг, 05 Октября 2017, 19:37 | Сообщение # 2565 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
drcrack, но coroutine будет растягиваться на кадры, когда как в update придется в том же кадре ждать, пока выполнится все команды. А coroutine будет выполнятся, пока в update много обновлений уже пройдет. Как ты собираешься производить вычисления, если они не успевают за кадр выполниться?

Так, давай еще разок. Есть задача: вычислять каждый кадр 10 миллионов раз корень из X
Не надо обсуждать, зачем и почему, просто представь что такое ТЗ
Ты утверждаешь что корутины выполняются где-то в отдельном потоке и никак не влияют на частоту кадров
Ну так напиши код который будет выполнять эту задачу и не влиять на фпс

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

Если сделать так, будет только одна итерация каждый кадр, этот код не соответсвует задаче


Сообщение отредактировал drcrack - Четверг, 05 Октября 2017, 19:39
drcrackДата: Четверг, 05 Октября 2017, 18:16 | Сообщение # 2566 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
но разве так сильно нагружает систему if который не проходит проверку ?

нет, это вообще мелочь незначительная, можно еще тысячу таких if рядом поставить и ничего не изменится
не знаю зачем afq вообще начал ее улучшать)

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

Зачем ты оптимизируешь искуственный пример blink
Он тут нужен только чтобы показать тебе, что корутины выполняются каждый кадр в том же потоке что и Update
(знаешь что такое yield return 0 (или null)? это значит "продолжить выполнение корутины в следующем кадре")

Цитата
скрипт изменил и он щас стал некорректно работать..слайдер больше не удаляется, а встает на 0 и все... до этого метод death() был с Destroy(gameObject) и все корректно работало...кроме начисления XP

А зачем изменил? Удалять надо именно gameObject, не компонент

Цитата
у меня на сцене одновременно 5 врагов одного типа, может быть проблема в этом ?

Ну так убери 4 лишних и посмотри что будет
drcrackДата: Четверг, 05 Октября 2017, 09:28 | Сообщение # 2567 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Добавь скрипт на сцену и наслаждайся: https://pastebin.com/sepRCmvy
(Если недостаточно сильно лагает, добавь еще один 0 в кол-во итераций, я под свой слабый проц на ноуте делал)
А потом подумай, как так получается, ведь в скрипте нету Update
drcrackДата: Среда, 04 Октября 2017, 22:02 | Сообщение # 2568 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
Поэтому чтобы вычисления не производит в кадре, делают в ienumerable, в такое случае уже не в кадре будут вычисляться, и не будет нагрузки на fps.

то что ты написал (yield return null внутри while) будет выполняться каждый кадр после всех Update и влиять на фпс точно также как влияло бы, если бы было написано в Update
и дело не в том, что ты как-то плохо написал (это самый обычный паттерн), просто по-другому не получится) если тебе нужно что-то делать каждый кадр, то придется делать это каждый кадр, в Update, в корутине или еще каким-то способом

иначе можно было бы вообще весь код перенести в корутины, убрать апдейты и было бы 500 фпс всегда

Цитата
Или ты считаешь себя умнее автора?

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

скачал книгу, автор все верно пишет:

то что я выделил как раз включает в себя корутины
в конце также сказано, что нужно делать: использовать события
и это как раз будет очень в тему: умирает моб — вызываются колбеки — начисляется экспа, и не надо ничего проверять в каждом кадре


Сообщение отредактировал drcrack - Среда, 04 Октября 2017, 22:20
drcrackДата: Среда, 04 Октября 2017, 21:44 | Сообщение # 2569 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
А что, EnemyHealth разве не класс? Я думал что это класс, который прикреплен к объекту.

https://msdn.microsoft.com/ru-ru/library/ey4ke239(v=vs.90).aspx

Цитата
Почему так? Потому что логично?

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

Цитата
А отредактировал то сообщение.

да, теперь вообще полная дичь)

Цитата
В книге той, которую я приводил в пример советовалось не производить вычисления в update, в update например делать мелкие вычисления.

все скрипты, включая корутины, выполняются в одном потоке и нет никакой разницы, в update они или где-то еще, тяжелые вычисления каждый кадр в любом случае будут просаживать фпс
кроме того, все обьекты юнити бросают исключения при попытке сделать с ними что-то из других потоков, даже банально Time.time ты прочитать не сможешь если вручную создашь второй поток
drcrackДата: Среда, 04 Октября 2017, 20:32 | Сообщение # 2570 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Код
/* указатель на объект */
GameObject enemy;
/* указатель на класс */
EnemyHealth enemy1;

и то и другое — ссылки на обьекты

Код
/* создай отдельный поток, чтобы он проверялся не в кадре, а в потоке, так он не будет замедлять покадровое обновление */
StartCoroutine ( wa () );

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

Код
Ещё предлагаю почитать книгу "Искусство создания сценариев в Unity", вдруг пригодится.

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

тсу лучше скинуть проект целиком, только так можно будет понять где проблема

PS
Код
enemy1.die

Это свойство должно называться isDead


Сообщение отредактировал drcrack - Среда, 04 Октября 2017, 20:36
drcrackДата: Среда, 04 Октября 2017, 18:54 | Сообщение # 2571 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
После
Код
Destroy(gameObject);

Вот это уже не будет работать:
Код
enemy1.GetComponent<EnemyHealth>()

Может поэтому и "не проходит if"

А вообще как уже сказали, все очень криво и лучше все это удалить и сделать с нуля нормально
Ну или хотя бы скинь проект целиком, по отрывкам скриптов сложно понять че там у тебя происходит
drcrackДата: Среда, 04 Октября 2017, 15:01 | Сообщение # 2572 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
ArtemS, и никого не смутило, что сначала мы убеждаемся, что enemy == null, а в следующей же строке пытаемся вызвать метод на enemy (который вообще-то null)

Цитата
Да точно. xp так не начислится.

Это не тот null, который null. Тут перегруженный == который возвращает true при сравнении с null если обьект разрушен. Но при этом как обьект C# он все еще существует и ты можешь делать с ним все что ты в принципе можешь делать с обьектом (кроме того что унаследовано от классов юнити, все эти вещи будут бросать исключение), например прочитать значение поля (вызова метода тут кстати не вижу)


Сообщение отредактировал drcrack - Среда, 04 Октября 2017, 15:03
drcrackДата: Среда, 04 Октября 2017, 08:48 | Сообщение # 2573 | Тема: Прокачка персонажа / Повышение уровня
старожил
Сейчас нет на сайте
Цитата
afq, нет. я думал он автоматически присваивается если объект уничтожается со сцены...

все верно, == перегружен и сравнение c null возвращает true если обьект уничтожен через Destroy/DestroyImmediate
т.е. код должен работать (ну, за исключением той мелочи что он должен прибавлять экспу каждый кадр после убийства врага)
ищи ошибку в логике, в других скриптах, покажи для начала тот где уничтожается враг


Сообщение отредактировал drcrack - Среда, 04 Октября 2017, 09:30
drcrackДата: Воскресенье, 01 Октября 2017, 22:20 | Сообщение # 2574 | Тема: Услуги по рассылке и продаже смс, email, viber, skype, whats
старожил
Сейчас нет на сайте
Цитата
Доставка варьируется от 90 до 93 % гарантировано.

Лолшто? Имеется в виду доставка в "Спам" что ли? Я за год максимум 2-3 рекламных письма вижу во входящих, все остальное (15+ в день) гугл стабильно отправляет в спам или вообще не принимает, сказки какие-то рассказываешь. Или ошибся на 2 порядка, вот 0.9% это похоже на правду.

Если кто закажет, отпишитесь потом, как оно)


Сообщение отредактировал drcrack - Воскресенье, 01 Октября 2017, 22:20
drcrackДата: Воскресенье, 01 Октября 2017, 21:51 | Сообщение # 2575 | Тема: Beast Hunter
старожил
Сейчас нет на сайте
Цитата
но откуда эта сумма в 1500$???

русский не может запустить кампанию, нужно быть резидентом (+иметь счет в банке) одной из развитых стран типа сша, германии, японии и тд, полный список у них на сайте, поэтому тебе нужен агент который будет получать деньги за тебя, и 1500+10% это их минимальные ценники

Цитата
я разве говорил что у меня что то есть?

ну так и я говорю что у тебя ничего нет) в этом и проблема

Цитата
есть примерный концепт, а не готовый документ

это не концепт а просто набор слабо связанных друг с другом идей
его нужно довести до ума чтобы было что обсуждать, потому что сейчас нечего
drcrackДата: Воскресенье, 01 Октября 2017, 13:00 | Сообщение # 2576 | Тема: Продам PC / Android игру
старожил
Сейчас нет на сайте
не надо демо, вообще не надо это продавать) на вид какой-то сборник бесплатных ассетов, а не игра
drcrackДата: Воскресенье, 01 Октября 2017, 09:51 | Сообщение # 2577 | Тема: Beast Hunter
старожил
Сейчас нет на сайте
Цитата
попробовать себя на Кикстартере или других краудфандинговых платформах и нанять команду для реализации, или продать концепт

выход для кикстартер для русского это минимум $1500 сразу и еще 10% от сборов, и еще попробуй найди контору которая согласиться работать с тем что у тебя есть (т.е. ни с чем)
другие площадки существуют, но там шансов вообще нет. открой индигого (топ2 после кикстартера между прочим) и полистай там успешные игры, посмотри их презентации и т.д., сравни с тем что есть у тебя

вообще чего я тебе рассказываю, погугли просто статьи людей, успешно собравших денег на кикстартере и узнаешь, сколько они вложили в разработку прототипа, трейлера и в пиар, прежде чем получили первый цент от бекеров — и подумай, если ли у тебя такой бюджет

Цитата
Так вот, что вы можете мне посоветовать делать с этой идеей?

забыть и заняться чем-нибудь другим, серьезно)


Сообщение отредактировал drcrack - Воскресенье, 01 Октября 2017, 09:59
drcrackДата: Суббота, 30 Сентября 2017, 03:22 | Сообщение # 2578 | Тема: Профессиональные бета перекупы
старожил
Сейчас нет на сайте
Я делаю игру, и хотя она на очень ранней стадии разработки, недавно вышел небольшой обзор: https://www.alphabetagamer.com/the-arena-beta-sign-up/. И с тех пор ко мне в форму регистрации на бету постоянно долбятся боты:



^ На скриншоте прямо совсем лютые, но есть и более аккуратные с почтами на нормальных сервисах

Теперь вы знаете, откуда берутся ключи на бета-тесты, которые массово продаются на плати.ру


Сообщение отредактировал drcrack - Суббота, 30 Сентября 2017, 03:22
drcrackДата: Четверг, 28 Сентября 2017, 03:02 | Сообщение # 2579 | Тема: Памятка начинающим программистам Unity (и не только)
старожил
Сейчас нет на сайте
Цитата
Ну не 99%. На многие вопросы по проблемам Unity ответов нет нигде, только такие же вопросы.

Такие есть, да, но как часто начинающие с такими сталкиваются?
Полистай темы в этом разделе, тут все вопросы уровня "как подвинуть куб" :D
drcrackДата: Среда, 27 Сентября 2017, 20:07 | Сообщение # 2580 | Тема: [3D] видео покер
старожил
Сейчас нет на сайте
Фон бы не помешал, это ж стандартный скайбокс )
Форум игроделов » Записи участника » drcrack [2639]
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг