![]() |
Оптимизация или Разделение программы на исполняемые компоненты.
Здравствуйте, у меня такая ситуация:
Написал каркас физического движка( на котором потом буду строить уже все события в игре) для своей игрухи. В нём я описал типы, и математические вычисления с этими типами, больше ничего в коде нет. При компиляции .EXE получается очень и очень здоровым. Хотелось бы как-нибудь разделить код на элементы(не модули, не вспомогательный инклуд), чтобы при компиляции генерировалось несколько файлов. И тогда при незначительном исправлении одного отрезка, не компилировать полностью весь файл опять, а только один файл из множества файлов одной системы. И можно будет в дальнейшем работать с этими кусками по отдельности. Я конечно понимаю что можно использовать DLL, но как в них использовать свои собственные типы-ума не приложу. Можно как в DOS-играх, наделать кучу EXE, и чтобы главный EXE запускал все остальные, передавая управления им, в зависимости от действий в игре. Но не думаю, что это практично. Как еще можно сделать так, чтобы при компиляции был не один файл EXE, а несколько отдельных бинарных файлов? |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Сразу - я не знаю как сделать то, что ты хочешь, но:
Цитата:
На моей памяти большой ехе-шник получается при использовании incbin. Если у тебя такое есть, то просто ресурсы в отдельный файл. А если нет, то поделись как удалось достичь таких высот (размеров). |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Для меня 30-50 метров это уже большой размер. =))))
А ведь размер еще и вырастет, когда на основе каркаса, я буду делать физический мир. И так EXE получается будет увеличиваться, и увеличиваться, и я не заинтересован в разростании этого "снежного кома". Задача такая, в общих чертах, чтобы к примеру если я разделю по смыслу все файлы(этот для физики, этот для обработки графики, этот для того то, этот для сего-то), то если их будет к примеру 10, то каждый должен весить скажем 1/10 от размера всей проги. То есть чтобы можно было разбить файл, разумеется точно размер угадать не получиться. Но мне важно разбить. Для чего это нужно? Для того чтобы было легче обновлять игруху по кускам, а не целый EXE. Я только на начальной стадии разработки, и уже стремлюсь сделать так, чтобы потом не переделывать, и не пересматривать структуру. Из специфичного использовал только пару вспомогательных модулей. А так, голый родной код. Функцию в твоем ответе не юзал. Все ресурсы, будь то текст, графика, у меня лежат в отдельных файлах. |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Exe 30 метров? - Бред.
Из одних исходников не получится. Или у тебя там исходникв на 800 метров? Может ты через data запекаешь ресурсы? Тогда откажись. Точный вес exe в студию. Точный вес всех исходников тоже давай. Также опиши все модули которые поключаешь. Директиву Framework используешь? А лучше приложи exe без ресурсов и прочей хрени. |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
По прогнозам так и будет при нынешних 10 метрах. =))))
Рамку не юзал, моды(GNet, bah.dbmsql, bah.dbmysql) дома взвешу - скажу. Неа, не через DATA. =)))) |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
У меня подозрение на аццкий быдлокод.
|
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Цитата:
Но, нет пределу совершенству, как говориться. Просто меня такие прогнозы(о размере файла) сильно пугают. И все-же, даже при весе EXE в 10 МБ, как же разделить по уму? |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Смотря что у вас там, общепринятый способ разделения - вынос части кода в dll.
Т.к. тема в разделе BlitzMAX предполагаю что на нём вы и пишите. Тогда стоит упомянуть об рекомендованом использовании Framework и Import только необходимых модулей. Если же фреймворк не указан, то подключаются все модули что увеличивает размер итогового файла. Так же откажитесь от IncBin. И ваш экзешник врятли привысит 2мб. |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
ОООО отлично, при этом лучше Strict использовать да?
Спасибо большое, попробую. А что вообще, из стандартных модулей, используют в качестве Framework? Тем не менее, тема не раскрыта. Вернемся к сабжу. На будущее (думаю может еще кому пригодиться) как, кроме использования DLL, добиться разделения? |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Кроме использования DLL или скриптов не знаю способов, вес меня всегда устраивал.
Прошу обратить внимание на debug режим, при нём exe не редко достигают большого размера. Попоробуй скомпилировать в release режиме. Если в твоём IDE нет такой возможности, то воспользуйся стандартным. Весить будет в 5 раз меньше. |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Самое лучшее начинать главный файл приложения так:
Код:
SuperStrict 1. Компилируем программу, если вылетает ошибка о неизвесной функции - нехватает модуля. 2. Смотрим что за функция, вызываем по ней справку. 3. Смотри к какому модулю она принадлежит (это определяем по адресу страницы или по нажатию ссылки Source которая откроет исходник модуля где и будет его название). 4. Повтроряем всё заново до отсутствия неопознаных функций. |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Я для уменьшения размера ехе-шника также использую программку UPX, просто кидаю на неё свой ехе и радуюсь результату!:)
Вот тут скачать можно: http://upx.sourceforge.net/ |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Цитата:
Цитата:
Брать тут: http://homepage.ntlworld.com/config/fa/#Download |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Всем огромное спасибо, так... с уменьшением EXE мы разобрались.
А как разбивать? Тема так и не раскрыта. =) |
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.
Цитата:
Цитата:
1) Использование выносных скриптов. При использовании этого способа нужно помнить, что скорость выполнения скриптов низка. И для релизации поиска пути или расчётов физики использование скриптов не приемлимо. http://www.blitzmax.com/Community/posts.php?topic=68845 2) Написание dll. Подходит для сложных рачётов. Кроссплатформенность отпадает. Подробнее тут: http://www.progz.ru/forum/index.php?showtopic=27569 |
Часовой пояс GMT +4, время: 15:04. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot