Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax

Ответ
 
Опции темы
Старый 31.05.2010, 13:05   #1
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Смущение Оптимизация или Разделение программы на исполняемые компоненты.

Здравствуйте, у меня такая ситуация:
Написал каркас физического движка( на котором потом буду строить уже все события в игре) для своей игрухи. В нём я описал типы, и математические вычисления с этими типами, больше ничего в коде нет. При компиляции .EXE получается очень и очень здоровым. Хотелось бы как-нибудь разделить код на элементы(не модули, не вспомогательный инклуд), чтобы при компиляции генерировалось несколько файлов. И тогда при незначительном исправлении одного отрезка, не компилировать полностью весь файл опять, а только один файл из множества файлов одной системы. И можно будет в дальнейшем работать с этими кусками по отдельности.

Я конечно понимаю что можно использовать DLL, но как в них использовать свои собственные типы-ума не приложу.

Можно как в DOS-играх, наделать кучу EXE, и чтобы главный EXE запускал все остальные, передавая управления им, в зависимости от действий в игре. Но не думаю, что это практично.

Как еще можно сделать так, чтобы при компиляции был не один файл EXE, а несколько отдельных бинарных файлов?
(Offline)
 
Ответить с цитированием
Старый 31.05.2010, 14:04   #2
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Сразу - я не знаю как сделать то, что ты хочешь, но:
Сообщение от Greymem Посмотреть сообщение
При компиляции .EXE получается очень и очень здоровым.
Меня интересует точная цифра размера ЕХЕ-файла!!!

На моей памяти большой ехе-шник получается при использовании incbin. Если у тебя такое есть, то просто ресурсы в отдельный файл. А если нет, то поделись как удалось достичь таких высот (размеров).
(Offline)
 
Ответить с цитированием
Старый 31.05.2010, 15:14   #3
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Для меня 30-50 метров это уже большой размер. =))))
А ведь размер еще и вырастет, когда на основе каркаса, я буду делать физический мир. И так EXE получается будет увеличиваться, и увеличиваться, и я не заинтересован в разростании этого "снежного кома".

Задача такая, в общих чертах, чтобы к примеру если я разделю по смыслу все файлы(этот для физики, этот для обработки графики, этот для того то, этот для сего-то), то если их будет к примеру 10, то каждый должен весить скажем 1/10 от размера всей проги. То есть чтобы можно было разбить файл, разумеется точно размер угадать не получиться. Но мне важно разбить.

Для чего это нужно? Для того чтобы было легче обновлять игруху по кускам, а не целый EXE. Я только на начальной стадии разработки, и уже стремлюсь сделать так, чтобы потом не переделывать, и не пересматривать структуру.

Из специфичного использовал только пару вспомогательных модулей.
А так, голый родной код.
Функцию в твоем ответе не юзал.
Все ресурсы, будь то текст, графика, у меня лежат в отдельных файлах.
(Offline)
 
Ответить с цитированием
Старый 31.05.2010, 15:32   #4
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Exe 30 метров? - Бред.
Из одних исходников не получится. Или у тебя там исходникв на 800 метров?
Может ты через data запекаешь ресурсы? Тогда откажись.
Точный вес exe в студию.
Точный вес всех исходников тоже давай.

Также опиши все модули которые поключаешь.
Директиву Framework используешь?

А лучше приложи exe без ресурсов и прочей хрени.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Greymem (31.05.2010)
Старый 31.05.2010, 15:33   #5
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

По прогнозам так и будет при нынешних 10 метрах. =))))
Рамку не юзал, моды(GNet, bah.dbmsql, bah.dbmysql) дома взвешу - скажу.
Неа, не через DATA. =))))
(Offline)
 
Ответить с цитированием
Старый 31.05.2010, 15:51   #6
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

У меня подозрение на аццкий быдлокод.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Dream (31.05.2010)
Старый 31.05.2010, 15:54   #7
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Сообщение от SBJoker Посмотреть сообщение
У меня подозрение на аццкий быдлокод.
Я конечно, не говорю что мой код идеален, разумеется я его оптимизирую(по маленьку) и даже 2 раза переделывал, разложил все методы, функции по полочкам. Сейчас вот довольно опрятный кодик.

Но, нет пределу совершенству, как говориться.
Просто меня такие прогнозы(о размере файла) сильно пугают.

И все-же, даже при весе EXE в 10 МБ, как же разделить по уму?
(Offline)
 
Ответить с цитированием
Старый 31.05.2010, 16:02   #8
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Смотря что у вас там, общепринятый способ разделения - вынос части кода в dll.
Т.к. тема в разделе BlitzMAX предполагаю что на нём вы и пишите.
Тогда стоит упомянуть об рекомендованом использовании Framework и Import только необходимых модулей. Если же фреймворк не указан, то подключаются все модули что увеличивает размер итогового файла.

Так же откажитесь от IncBin. И ваш экзешник врятли привысит 2мб.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Greymem (31.05.2010)
Старый 31.05.2010, 16:05   #9
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

ОООО отлично, при этом лучше Strict использовать да?
Спасибо большое, попробую.

А что вообще, из стандартных модулей, используют в качестве Framework?

Тем не менее, тема не раскрыта. Вернемся к сабжу. На будущее (думаю может еще кому пригодиться) как, кроме использования DLL, добиться разделения?
(Offline)
 
Ответить с цитированием
Старый 31.05.2010, 17:17   #10
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Кроме использования DLL или скриптов не знаю способов, вес меня всегда устраивал.
Прошу обратить внимание на debug режим, при нём exe не редко достигают большого размера.
Попоробуй скомпилировать в release режиме. Если в твоём IDE нет такой возможности, то воспользуйся стандартным.
Весить будет в 5 раз меньше.
(Offline)
 
Ответить с цитированием
Старый 31.05.2010, 18:34   #11
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Самое лучшее начинать главный файл приложения так:
SuperStrict

Framework brl.blitz

Import [модуль 1]
Import [модуль 2]
...
Узнать какие модули нужны можно или руководствуясь опытом, или по алгоритму:
1. Компилируем программу, если вылетает ошибка о неизвесной функции - нехватает модуля.
2. Смотрим что за функция, вызываем по ней справку.
3. Смотри к какому модулю она принадлежит (это определяем по адресу страницы или по нажатию ссылки Source которая откроет исходник модуля где и будет его название).
4. Повтроряем всё заново до отсутствия неопознаных функций.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Greymem (01.06.2010)
Старый 01.06.2010, 06:48   #12
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Я для уменьшения размера ехе-шника также использую программку UPX, просто кидаю на неё свой ехе и радуюсь результату!

Вот тут скачать можно: http://upx.sourceforge.net/
(Offline)
 
Ответить с цитированием
Старый 01.06.2010, 11:52   #13
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Сообщение от Жека Посмотреть сообщение
Я для уменьшения размера ехе-шника также использую программку UPX, просто кидаю на неё свой ехе и радуюсь результату!

Вот тут скачать можно: http://upx.sourceforge.net/
На него часто антивирусы ругаются.
1. Компилируем программу, если вылетает ошибка о неизвесной функции - нехватает модуля.
На этот случай есть Framework assistant.
Брать тут: http://homepage.ntlworld.com/config/fa/#Download
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
BlackOut (01.06.2010), Greymem (01.06.2010)
Старый 01.06.2010, 13:52   #14
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Всем огромное спасибо, так... с уменьшением EXE мы разобрались.
А как разбивать?
Тема так и не раскрыта. =)
(Offline)
 
Ответить с цитированием
Старый 01.06.2010, 14:38   #15
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Оптимизация или Разделение программы на исполняемые компоненты.

Сообщение от Greymem Посмотреть сообщение
Всем огромное спасибо, так... с уменьшением EXE мы разобрались.
Поведайте, как. Просто интересно, что именно помогло.

Сообщение от Greymem Посмотреть сообщение
А как разбивать?
Тема так и не раскрыта. =)
Я уже предлагал.
1) Использование выносных скриптов.
При использовании этого способа нужно помнить, что скорость выполнения скриптов низка. И для релизации поиска пути или расчётов физики использование скриптов не приемлимо.

http://www.blitzmax.com/Community/posts.php?topic=68845

2) Написание dll.
Подходит для сложных рачётов.
Кроссплатформенность отпадает.
Подробнее тут:
http://www.progz.ru/forum/index.php?showtopic=27569
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
BlackOut (01.06.2010), Greymem (10.06.2010)
Ответ


Опции темы

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

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


Часовой пояс GMT +4, время: 02:54.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com