BGE, Python , опыты дилетанта.

Board index Геймдев в Blender Игровой движок Blender

Description: Все вопросы и обсуждения, касающиеся BGE
Moderators: exooman, denis8424

Post #401by Bibo » 04.12.2015, 09:27

Mihanik, нужно еще 2 текстуры кнопок, "Подтвердить" и "Отменить", для меню выбора пользовательской картинки.
Bibo
Avatar
Posts: 612

Post #402by Mihanik » 04.12.2015, 12:33

Хорошо, сейчас нарисую.

Added after 1 hour 12 minutes:
вот
https://img-fotki.yandex.ru/get/6826/80739172.6/0_d1f41_79d76871_orig
Mihanik M
Avatar
Posts: 1571

  • 1

Post #403by Bibo » 07.12.2015, 13:57

Mihanik, вот пробная версия: Game.7z
Внесены все правки из этого сообщения, с одним отличием. Шестеренки по прежнему появляются на не активных объектах, с которыми можно взаимодействовать, за исключением картинок в шкафу. Пока картинка не открыта, шестеренок нет.
Выход из игры так же не происходит по нажатию клавиши Esc мгновенно, появляется меню. Чтобы выйти из меню результатов теперь нужно нажать Esc.

Mihanik wrote:_Можно будет вместо 7-ой картинки вставить коротенькое зацикленное видео???
Установил видео на 7-ю картинку. Чтобы заменить, замени файл picture_7.avi в каталоге pictures. Контейнер тот же .avi.

Mihanik wrote:_Можно будет вместо 8-ой картинки организовать свободный выбор картинки с жёсткого, хотя бы из папки pictures???
Сделал меню выбора картинки, открывается при нажатии на 8-ю картинку в шкафу (давления должно быть достаточно для работы). Список прокручивается колесиком мыши, либо кнопками W/S. Выход из меню выбора картинки по кнопке отмены или клавише Esc.
И здесь есть несколько важных моментов:
Spoiler
Видимо BGE неприспособлен для работы с символами за пределами таблицы ASCII. То есть, если в пути к файлу картинки будет существовать кириллица или какие-то диакритические знаки, функция ImageFFmpeg, используемая для загрузки ресурса новой текстуры, просто не сработает. Потому пришлось прибегнуть к костылю. Интерпретатор Python-а прекрасно переваривает юникод в путях, поэтому, прежде чем загрузить новую картинку через функцию ImageFFmpeg, я копирую ее в каталог не содержащий лишних символов (в корень жесткого диска) и уже оттуда загружаю, после чего удаляю временный файл. Но в таком случае возникает проблема доступа, если игра или картинка распологаются в каталоге с ограниченным доступом (например на диске с операционной системой), загрузка не произойдет.
Spoiler
Из-за той же проблемы символов, сразу после сборки игры в готовый результат, будет нужно внести изменения в скрипт загрузки оригинальных картинок, так как сейчас там используется абсолютный путь вместо относительного, в силу того что относительным путем является каталог движка (редактора), а файлы игры находятся в совершенно другом месте.
Если говорить вкратце, то чтобы работал выбор картинки с жесткого диска, игру (или редактор) нужно запускать от имени администратора.
Last edited by Bibo on 07.12.2015, 16:04, edited 1 time in total.
Bibo
Avatar
Posts: 612

Post #404by Mihanik » 07.12.2015, 14:28

Отлично, опять до вечера играть придётся.:0)
Bibo wrote:И здесь есть несколько важных моментов:
Ну я собственно вообще не надеялся что удастся побороть эту проблему с кириллицей, думал просто read me написать на эту тему.

Added after 7 hours 16 minutes:
Вообще всё круто,Видео собрать очень, трудно но возможно.И это пожалуй самое интересное. В связи с этим вопрос, можно ли чтобы при выборе произвольной картинки с жёсткого, можно было выбрать и видео AVI а не только картинки JPEG?
Ещё есть небольшое замечание по настройке.При давлении пара 15 уже заметно замедление работы механизма и в этот момент, думаю, надо производить автозагрузку если она есть. При давлении 10, замедление уже начинает напрягать, и игрок вынужден будет бежать за углём, при 5, думаю, стоит остановить работу механизма вообще, это избавит нас и от проблем со звуком, который, вероятно, откажется работать на такой медленной скорости.
И работа счётчика времени стала зависеть от давления, это наверное не правильно, думаю лучше пусть время считает нормально пока давление не упадёт ниже 5 а там всё остановим.
Mihanik M
Avatar
Posts: 1571

Post #405by Bibo » 07.12.2015, 21:59

Mihanik wrote:В связи с этим вопрос, можно ли чтобы при выборе произвольной картинки с жёсткого, можно было выбрать и видео AVI а не только картинки JPEG?
Не уточнял весь список форматов, но сейчас он видит файлы png, jpg и tga .
В теории возможно сделать и выбор видео, но тут есть несколько существенных нюансов:
  • видео (судя по опытам) движок не загружает целиком в память, а читает прямо с диска, что делает недоступным изменение файла выбранного видео
  • загружая картинки огромного размера, я получал пару раз падение игры с сообщением C++ Runtime library
  • вытекает из первых двух: чтобы обойти проблему с кириллицой и пр., я создаю временную копию файла, что означает, ее нельзя будет удалить пока в пятнашках задействованно выбранное видео и в случае выбора файла огромного размера (догадается допустим пользователь ткнуть серию своего любимого сериала в HD), может просто не хватить места на диске

По остальным пунктам внесу правки.
Last edited by Bibo on 07.12.2015, 22:41, edited 1 time in total.
Bibo
Avatar
Posts: 612

Post #406by Mihanik » 07.12.2015, 22:19

:-D Я всё таки надеюсь на адекватность пользователей.Хотелось бы иметь такую возможность.Может как то добавить ограничение на размер? И вероятно какое то read me придётся написать с описанием возможностей и понимаемых форматов.
Mihanik M
Avatar
Posts: 1571

Post #407by Bibo » 07.12.2015, 22:45

Mihanik wrote:Может как то добавить ограничение на размер?
Это можно, ограничить размер картинок до 2-3мб, видео до 5-7мб. При попытке загрузить изображение/видео слишком большого размера, вывести о том сообщение, дескать, "выбран слишком большой образец".
Bibo
Avatar
Posts: 612

Post #408by Mihanik » 08.12.2015, 09:34

В рамках оптимизации переделал 4 объекта, минус один мат,минус несколько килополиков, и минус несколько текстур, также поправил фон за окном.
https://yadi.sk/d/i7Z5im9qhwb3u
Выигрыш в производительности если и есть то микроскопический.Можно ещё у многих объектов переделать маты выкинув карту блеска, использовав вместо неё диффуз, но не знаю есть ли смысл...
Mihanik M
Avatar
Posts: 1571

Post #409by Bibo » 10.12.2015, 16:06

Bibo wrote:но мне хочется ознакомится с ранее незнакомым модулем aud
Что-то я вот совсем встал с этим модулем. Загрузить звук и воспроизвести, это без проблем. Но когда дело доходит до прочих настроек и 3D звука, упираюсь в стену. Документация особой ясностью не блещет, на англофорумах натыкался на информацию, дескать, через aud 3D звука так и вовсе не пропишешь, только кирпичами ?:-|
Может есть какой-то пример скрипта применяющего библиотеку aud?
Bibo
Avatar
Posts: 612

  • 3

Post #410by Mihanik » 11.12.2015, 16:28

Спешу поделиться изысканиями по поводу оптимизации, Видимо у меня были завышенные требования к текстурам. Просто, тупо все текстуры автоматом уменьшил в два раза, т. е. 1024 в 512, 512 в 256 и т. д. И с удивлением обнаружил, что картинка ухудшилась весьма незначительно. Вот
Spoiler
Image
И никаких подтормаживаний на подзагрузках падений FPS в автономном режиме, у меня даже в стерео режиме FPS держит около 40.
Так вот Bibo, сможем мы организовать настройку качества текстур в игре? Низкое из одной папки высокое из другой? Правда надо ещё потестить на слабых машинах оправдано ли это.
Mihanik M
Avatar
Posts: 1571

Post #411by Bibo » 11.12.2015, 17:40

Mihanik, прямой способ мне неизвестен, если таковой существует. Это будет один из двух возможных костылей:
1. Менять сетку объекта через replaceMesh, на сетку с упрощенной текстурой, но это подарит +200 объектов-клонов в сцене.
2. Обойти все объекты сцены, создать объект текстуры через модуль bge.texture и подменить текущий, тяжелый ресурс на облегченный. Но неизвестно, как сильно провиснет игра, выполняя подмену почти 3-х сотен текстур и может ли это вызвать падение игры.

Можно вспомнить про лоды, но это тот же принцип, что и replaceMesh, много-много копий объектов и их материалов.
Bibo
Avatar
Posts: 612

Post #412by Mihanik » 11.12.2015, 17:55

Не, не, что то с путями, или переименованием папки. Запустить что то, что даст нужное имя нужной папке, а потом запустит игру.
Mihanik M
Avatar
Posts: 1571

Post #413by Bibo » 11.12.2015, 18:14

Это основная проблема, текстуры загружаются только когда объект попадает в камеру. Заставить движок загрузить их во время игрового процесса нельзя, так же как и перезагрузить.
То есть, даже если переименовать каталог, чтобы изменения вошли в силу, придется начать игру заново. А чтобы переименовать каталог программно, может потребоваться запустить игру от имени администратора. Конечно, все это очень плохо.
Bibo
Avatar
Posts: 612

Post #414by Mihanik » 11.12.2015, 19:57

Bibo wrote:Заставить движок загрузить их во время игрового процесса нельзя,
Ну собственно зачем во время процесса, я ж говорю запускаем хоть даже отдельный экзешник, который спрашивает с каким качеством запустить игру, он вносит необходимые изменения, и запускает игру, или на худой конец нужную версию игры.

Added after 7 minutes 53 seconds:
Или может чего со слоями можно намудрить, но динамическая замена как в лодах тут собственно ненужна... наверное... или нужна... не знаю. надо подумать, но направление для оптимизации есть точно.
Mihanik M
Avatar
Posts: 1571

Post #415by Bibo » 11.12.2015, 20:36

С тем же успехом можно скопировать финальный бленд-файл сцены. Будет 3 файла. 1-й с текстурами высокого разрешения, 2-й с текстурами низкого разрешения. 3-й, выбирает качество и исходя из выбора, запускает либо 1-й либо 2-й.
Bibo
Avatar
Posts: 612

Post #416by Mihanik » 11.12.2015, 20:56

Так и да, это самое простое, но сильно увеличит размер контента, попробую всё таки лоды сначала, для чего то же их придумали.Там можно не менять геометрию, только материал. Вопрос будет ли это на столько же эффективно как тупая замена текстур? Или ещё хуже будет, ведь ему придётся подгружать уже 2 комплекта текстур? Не попробуешь не узнаешь...
Mihanik M
Avatar
Posts: 1571

Post #417by Bibo » 11.12.2015, 21:21

А что это даст? Для подмены материала в любом случае нужен объект, с которого он будет взят. Да и в API я не нашел функции управления лодами, как их загрузить?
Bibo
Avatar
Posts: 612

Post #418by Mihanik » 11.12.2015, 23:13

Вопрос как он будет подгружать текстуры. Если только нужные, то при правильной настройке расстояния, это будут в основном лёгкие. И обработка текстур, уже загруженных, должна быть легче. осталось найти время на переделку сотни матов и надеяться что не зря.
Mihanik M
Avatar
Posts: 1571

Post #419by Bibo » 12.12.2015, 08:55

Mihanik, я так и не понимаю, как ты собрался использовать лоды для переключения между тяжелыми и легкими текстурами. Проясни ситуацию, пока не пустился во все тяжкие.
Bibo
Avatar
Posts: 612

Post #420by Mihanik » 12.12.2015, 09:36

По их прямому назначению, заменять от расстояния. Просто надеюсь на выигрыш в производительности.
Mihanik M
Avatar
Posts: 1571

PreviousNext

Return to Игровой движок Blender