Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 27.05.2018, 11:03   #1
WarlikeLaux
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 12
Репутация: 10
По умолчанию Оптимизация визуальной новеллы

Я делаю визуальную новеллу (интерактивная книга, картинка + текст внизу + музыка), у меня несколько вопросов
1) Я храню все (текстовый файл со сценарием, картинки и музыку) в ресурсах, правильно ли это? Или при большом количеством данных могут быть проблемы? Как лучше делать? Загружать все из ресурсов на время выполнения или хранить на винте?
2) Как можно ускорить выведение картинки в TImage, а то немного подлагивает, ну совсем, боюсь что дальше хуже будет.
3) Из-за скинов AlphaControls (нужен скин один на несколько компонентов + сами компоненты AlphaControls) и у меня приложения весит на 16 мб больше (еще тысяча файлов .dcu с исполняемым файлом создается, ну лан, не тыща, крч 10 штук где-то), не уверен, что все из них используются приложением, так вот, можно как-нибудь удалить ненужную хрень, которую я не использую из AlphaControls, а то я чет уверен что я использую максимум 1 процент, от того что присасывается к моей игре
WarlikeLaux вне форума   Ответить с цитированием
Старый 27.05.2018, 13:01   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,008
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Зачем это на Дельфи делать? Возьмите любой игровой движок, не придется изобретать велосипеды, не будет никаких подлагиваний TImage и сможете например немного анимации добавить )
Alex11223 вне форума   Ответить с цитированием
Старый 27.05.2018, 13:14   #3
WarlikeLaux
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 12
Репутация: 10
По умолчанию

Я хочу именно на Delphi, как практика в программировании (знаю, что велосипед, но все же), на движке толком не надо никаких знаний программирования.
WarlikeLaux вне форума   Ответить с цитированием
Старый 27.05.2018, 14:04   #4
eoln
Профессионал
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,708
Репутация: 2215

icq: 421277094
По умолчанию

Абстрактные вопросы - абстрактные ответы.
1) Дело вкуса, хотя не лучшая идея. Хранить можно всё и в отдельных файлах.
2) Не успевают прочитаться данные или просто моргание при быстрой смене картинки?
3) Да, что-то убрать можно.Скорее всего вот ту штуку, и ещё пару штук левее от неё. А дцу не нужны конечной программе
eoln вне форума   Ответить с цитированием
Старый 27.05.2018, 14:19   #5
WarlikeLaux
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Абстрактные вопросы - абстрактные ответы.
1) Дело вкуса, хотя не лучшая идея. Хранить можно всё и в отдельных файлах.
2) Не успевают прочитаться данные или просто моргание при быстрой смене картинки?
3) Да, что-то убрать можно.Скорее всего вот ту штуку, и ещё пару штук левее от неё. А дцу не нужны конечной программе
Не успевают прочитаться данные, щас пробую выводить с помощью Graphics32, вроде должно быть быстрее. То, что дцу не нужны конечной программе это я знаю, а насчет ненужных штучек ну это я да, неправильно вопрос сформулировал, но может просто кто работал с AlphaControls и сталкивался с таким.
WarlikeLaux вне форума   Ответить с цитированием
Старый 27.05.2018, 14:32   #6
eoln
Профессионал
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,708
Репутация: 2215

icq: 421277094
По умолчанию

Цитата:
Не успевают прочитаться
Цитата:
пробую выводить
Есть проблема, и есть решение... или нет
Кэшировать надо, если чтение не успевает. Если, конечно, причина установлена правильно.
Тут прям как с болезнью, каждый сам выбирает лечение. Если болит спина, то выхода два. Либо к терапевту - он назначит лекарства, либо к хирургу - он позвоночник вырежет
eoln вне форума   Ответить с цитированием
Старый 27.05.2018, 19:08   #7
саша40
Профессионал
 
Регистрация: 12.09.2012
Сообщений: 1,026
Репутация: -22
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Есть проблема, и есть решение... или нет
Кэшировать надо, если чтение не успевает. Если, конечно, причина установлена правильно.
Тут прям как с болезнью, каждый сам выбирает лечение. Если болит спина, то выхода два. Либо к терапевту - он назначит лекарства, либо к хирургу - он позвоночник вырежет
Буферы всему голова. Не успевает подгружать - увеличь размер. Несколько килобайт в современных нескольких гигабайтах, как капля в море.

Цитата:
Сообщение от WarlikeLaux Посмотреть сообщение
Не успевают прочитаться данные, щас пробую выводить с помощью Graphics32, вроде должно быть быстрее. То, что дцу не нужны конечной программе это я знаю, а насчет ненужных штучек ну это я да, неправильно вопрос сформулировал, но может просто кто работал с AlphaControls и сталкивался с таким.
Сколько себя помню, из сторонних библиотек конечной программе (.exe файлу) нужно только dll - библиотеки и динамически загружаемые ресурсы - часто форматы .dat, .package и т.п. Их прям в коде видно - не упустишь. Единственное, что .dcu файлы понадобятся при компиляции, если их нет в папке библиотек Delphi(Documents/Dephi/Lib, если правильно помню), так как в них содержится данные Unit-модуля компонента. Но их обычно, как устанавливаешь сразу туда копируешь.
__________________
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума   Ответить с цитированием
Старый 27.05.2018, 21:07   #8
WarlikeLaux
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Есть проблема, и есть решение... или нет
Кэшировать надо, если чтение не успевает. Если, конечно, причина установлена правильно.
Тут прям как с болезнью, каждый сам выбирает лечение. Если болит спина, то выхода два. Либо к терапевту - он назначит лекарства, либо к хирургу - он позвоночник вырежет
А как кэшировать? Сохранять в MemoryStream? Или через MappedMemoryStream?
WarlikeLaux вне форума   Ответить с цитированием
Старый 27.05.2018, 21:08   #9
WarlikeLaux
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Буферы всему голова. Не успевает подгружать - увеличь размер. Несколько килобайт в современных нескольких гигабайтах, как капля в море.
А как лучше кэшировать? Вопрос выше.
WarlikeLaux вне форума   Ответить с цитированием
Старый 28.05.2018, 11:01   #10
саша40
Профессионал
 
Регистрация: 12.09.2012
Сообщений: 1,026
Репутация: -22
По умолчанию

Цитата:
Сообщение от WarlikeLaux Посмотреть сообщение
А как лучше кэшировать? Вопрос выше.
Функции GetMem, Zeromemory, а так же динамический массив байтов, который в народе и используется как буфер данных. Кэширование - это промежуточная запись часто используемых данных в быструю память(Оперативную или видеопамять). При подгрузке вы считываете данные в эту память, а уже из неё используете. Например, ближайшие объекты(сцены, персонажи, объекты) кэшируем в видеопамять, из неё они используются для создания следующего кадра, по вверх их можно накинуть шейдеры(например, погодные эффекты или физические шейдеры отвечающие за эффекты освещения), уже последующие одновременно загружаются из оперативной памяти, а третьи и вовсе с диска. При этом после использования буферы очищаются и используются заново.
Итог получаем: Минимум 2 буфера видеопамяти(для объектов графики), 2 буфера быстрой памяти и 4 потока динамической подгрузки.
На счёт видеопамяти в создание фреймов(TFrame или как-то так) я не слишком уверен, но на счёт данных в быстрой памяти точно. Так же можно незадолго до использования загрузить в буфер музыку и звуки, а уже при использование воспроизводить их из памяти.
Конечно, организация всех подгрузок строиться по сценарию игры и это практически всегда скрипт. Отсюда в во всех более больших играх и добавляли значок загрузки во время игрового процесса, как информатор для пользователя, что в данный момент игра подгружает объекты и FPS немного упадёт.
На счёт кода - в сети очень часто всплывало использование буферов. И на этом форуме тоже.
__________________
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка интерактивной визуальной среды ЮляБелка Помощь студентам 16 02.06.2016 05:11
Массив в визуальной среде Eleonor Visual C++ 2 27.04.2013 09:08
шифрование визуальной информации dimassdimass Visual C++ 2 31.01.2013 10:53
Блок схема визуальной программы mkv94 Помощь студентам 1 09.02.2012 04:35
Основы визуальной алгоритмизации Gae4kkka Помощь студентам 3 29.11.2009 15:45


07:38.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru