Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

как облегчить игру?   Найти похожие ветки 

 
Bogdan1024 ©   (2006-01-31 07:58) [0]

Есть игра, которая уже полностью написанная на Дэлфи7+ДэлфиХ. Как можно её облегчить? Я имею ввиду именно сам эхэ-шник.


 
П7   (2006-01-31 08:26) [1]

Облегчить? UPX? RAR?


 
cyborg ©   (2006-01-31 09:33) [2]

Экзешник облегчать не нужно. Нужно ресурсы игры облегчать, если это имеет смысл. Изначально у меня Чебуратор 50 с лишним мегабайт весил, но потом всего 20 стал :).


 
Mortem ©   (2006-01-31 10:46) [3]

Я полагаю, что все ресурсы запиханы в DelphiX-контейнеры. Типа ImageList...


 
XProger ©   (2006-01-31 11:16) [4]

Bogdan1024, очень просто - забываем про существование формы, про DelphiXб Classes, SysUtils, Graphics и т.п.
Оставляешь только Windows, mmSystem, WinSock и заголовочные файлы графического (звукового, физического) API.
Также забываем про существование class"ов :)

Если и этого мало - лезем за чисткой системных модулей
http://xproger.mirgames.ru/?id=1&doc=delphi_min
Если приложение достаточно мелкое - все свои модули подключаешь к основному dpr через директиву {$INCLUDE ...} это даст несколько килобайт за модуль :)

Опускаешься ниже - получаешь массу новых возможностей, взамен потраченному времени :)


 
П7   (2006-01-31 11:57) [5]


> XProger ©   (31.01.06 11:16) [4]

Полож классы туда, где взял! Они слишком хороши для тебя. (:


 
Sphinx ©   (2006-01-31 13:28) [6]

использование классов (с умом) - это прирост примерно на 5 кб

Свавнивал сам, простенькая прожка с object, а потом с class - разница в 5 кб.

Так что отказ от ООП - это уже экстремизм =)


 
Mortem ©   (2006-01-31 15:03) [7]

Думаю автора топика 5 килобайт не спасут! (:


 
XProger ©   (2006-01-31 16:06) [8]

П7, есть object или record на крайняк... ООП - не всегда гут :)
Sphinx, создай 2 класса... 3 класса потом добавь наследование как тебе размерчик? Как на дрожжах да? ;) Владимир Кладков это понимал, когда KOL писал ;)


 
Кефир87 ©   (2006-01-31 20:29) [9]

Да... и вызовы методов через эти таблицы куда медленней чем прямые вызовы процедур и функций...


 
аноним   (2006-01-31 21:13) [10]

извращенцы. ей богу.


 
Кефир87 ©   (2006-01-31 21:29) [11]

Я? Нее... От ООП не отрекался пока... Это вон XProger мелкий извращенец 8) Проги по 500 байт на делфи пишет 8)


 
Galiaf ©   (2006-02-02 20:52) [12]

>Это вон XProger мелкий извращенец 8) Проги по 500 байт на делфи пишет 8)
Тоже хочуууу!
Здаровый видно, раз так крепко сжимает :).


 
XProger ©   (2006-02-03 05:16) [13]

Galiaf, ничего сверх-естественного http://xproger.mirgames.ru/?id=1&doc=delphi_min


 
Bogdan1024 ©   (2006-02-03 21:48) [14]

Почитал статью твою, XProger, поковырял свой код... вот зло, получается, что уменьшить размер эхэ-шника уже нельзя никак :) Ну вот разве что UPX-ом, только как-то применять его нет великого смысла потому что у меня сжатый UPX-ом и раром файл весит всего лишь на 15КБ легче чем просто сжатый раром (изначально эхешник весил 626 КБ).
...Ещё предложения :)?


 
grouzd[E]v ©   (2006-02-03 22:05) [15]

15кб это очень много, просто твои 626 можно значительно урезать только выбросив vcl

---
... we are walking on a thin line and you better avoid the risk ...


 
XProger ©   (2006-02-03 22:15) [16]

Bogdan1024, перечитать статью ;)


 
Домовенок ©   (2006-02-03 23:59) [17]

Если игра хорошая, то размер не важен. Пользователям (игрокам) же до размера вашей программы (игры) как до лампочки, им же главное процесс (результат). А все эти: "у меня меньше игра; неет, у меня меньше..." - это называется "мерится пиписьками".. :)


 
Cash ©   (2006-02-04 09:31) [18]

grouzd[E]v ©   (03.02.06 22:05) [15]:
ЗЫ: Убрать VCL и отавить DelphiX.
(у парня же на нем игра, и вопрос по облегчению именно ее)
И ваще, Домовенок © отчасти прав!


 
TWINc ©   (2006-02-04 09:47) [19]

вот уменьшить размер игры с 4 ТБ я понимаю... а гнаться за кб имхо не благодарное занятие... вы же не вирус пишите


 
Cash ©   (2006-02-04 09:49) [20]

TWINc ©   (04.02.06 09:47) [19]:
А кто их знает! :)))
Давно психологи уже говорят про вирус игровой зависимости! :)))


 
XProger ©   (2006-02-04 12:39) [21]

ДЫк, фокус то в другом! Это одна из задач ставящихся программистом перед самим собой, это вызов самому себе! + чем ниже уровень программирования - тем лучше понимание сути многих вещенй...


 
Bogdan1024 ©   (2006-02-04 13:46) [22]

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


 
Кефир87 ©   (2006-02-04 14:18) [23]


> Что-то не вижу связи между уровнем программиста и его пониманием.

Уровень программироваяния это не уровень программиста 8)


 
Cash ©   (2006-02-04 14:28) [24]

Bogdan1024 ©   (04.02.06 13:46) [22]:
Уровень не программиста, а программирования! Понимаешь?
Спускайся с высокого Эвереста Delphi к бескрайней низменности Assembler-а!
:)))
Тогда типа толк будет.

XProger ©:
А слабо тебе извращенцу такому без UPX и всяких там фигулек в нормальном
PE формате сделать работоспособную вещь, которая хыть бы с DirectX
дружила, инициализировала, выводила примитивы и считала FPS, и !!!
при всем этом весила меньше 20kB??? (Это мне так... поржать! {из КВН})


 
XProger ©   (2006-02-04 18:34) [25]

Bogdan1024, а ты понимаешь, что и как делает SetLength что адреса элементов массива меняются? ;)

Cash, ой мать... ещё один пятушок... был тут уже "спор" с cyborg"ом (поищи по форуму), и как ты думаешь, кто выйграл? ;)
http://xproger.mirgames.ru/files/bin/X4k.rar - вот тебе 6144 байт (обычный PE без UPX) сжатый COM - 2603 байта...

Зачем же до асма? Достаточно до API спуститься...


 
Darthman ©   (2006-02-04 19:48) [26]

Cash вполне возможно.. ржать не надо. У меня есть похожие, но в меру навороченности (они не только инициализируют) они немного больше. 27Кб тебя устроит? Полноценная игра.


 
Домовенок ©   (2006-02-04 22:55) [27]

> XProger ©   (04.02.06 12:39) [21]
> ДЫк, фокус то в другом! Это одна из задач ставящихся программистом
> перед самим собой, это вызов самому себе! + чем ниже уровень
> программирования - тем лучше понимание сути многих вещенй...


Спору нет.
Но одно дело ставить перед собой второстепенные задачи для разминки... Например, как предложил Cash... Другое дело, когда программист, разрабатывая игру в одиночку, посвящает все свои силы, тому чтобы игра получилась маленькой по своим размерам, в место того чтобы она была интересной.

> Bogdan1024 ©   (04.02.06 13:46) [22]
> Ну, как бы маленький размер способствует скачиваемости.


Согласен, возможно, больше человек скачает маленькую игру... Но фишка то в том, что не важно, сколько человек скачает игру и посмотрит, важно, как надолго эта крохотулька задержится на его винте, как долго он будет играть в очень маленькую по размерам, но не очень интересную игру!? :) То есть лично для меня как для игродела важно не то какая по размеру игра получилась, а насколько она затянула игрока, как долго он в нее будет играть и пройдет ли всю... Думаю, суть ясна. Лично я считаю что настоящий игрок, не пожалеет считанные килобайты или даже мегабайты если игра будет достойной.

А пиписьками мерится можно сколько угодно :)


 
Cash ©   (2006-02-05 07:18) [28]

XProger ©   (04.02.06 18:34) [25]:
Ну я ж выразился по КВН-овски, "так по ржать", то есть мне нафиг не надо
спорить, потаму, что я твою изващенскую личность знаю. Знаю что ты с
модулями DirectX сделаешь, поэтому проблема спора отпала. Так же знаю,
что в стандартной ситуации, с нормальными и полными модулями такое
сделать невозможно. Сколько весит Direct3D8.dcu? А подключить не только
его одного иногда надо. А твои проделки с системными модулями больше
походят на "рукоподобный c++ прекомпилятор" (я бы еще, в шутку, сказал:
"рукоблудный" :)))).

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


 
antonn ©   (2006-02-05 07:25) [29]

XProger ©   (04.02.06 18:34) [25]
http://xproger.mirgames.ru/files/bin/X4k.rar - вот тебе 6144 байт (обычный PE без UPX)

скажем так, для того, чтобы скомпилить на таком размере, нужно подправить некоторые модули... Скомпилированый на D7, без всяких правок, программа весит 18 432 байт.
И к слову - то, что я скомпилировал программой я не назову, никакого функционала она не несет.
с такм же успехом можно и
program X4k;
begin
end.

скомпилить...

ксати, после думов/фар_краев/феаров, я уже не воспринимаю игры как "отличные", если они в дистрибутиве весят меньше 1CD (я про полные версии, не про демки игр). Обычно мое восприятие меня не обманывает.
По поводу размера exe"шников - у меня винт большой, мне как то пофиг, занимает exe игры 10Кб или 2Мб. Думаю не у одного меня такое же мнение, не вижу осмысленной экономии места... Почему то размер в оперативной памяти никто не смотрит... и сравнить, сколько игра там займет после упаковки upx"ом (камень в тех, кто предлагает все и вся зажать упаковщиками).


 
XProger ©   (2006-02-05 10:47) [30]

antonn, научись пользоваться Delphi, а в частности, подключать модули... ;)


 
Sapersky   (2006-02-05 12:25) [31]

Сколько весит Direct3D8.dcu?

72862 байта :)
Но это не означает, что дельфийский линковщик все эти байты прицепит к exe. Он довольно умный на самом деле - прицепляет только то, что реально используется. Не говоря уже о том, что заголовки DX - это просто описание функций (интерфейсов), а вся функциональность находится в D3D8[9].dll.
Так что впихнуть в 20 кб вывод одного треугольника вполне реально (к заголовкам Clootie прилагается именно такой пример). С другой стороны, мало кому нужен один треугольник...


 
Cash ©   (2006-02-05 12:48) [32]

XProger ©   (05.02.06 10:47) [30]:
ЗЫ: а я знаю как правильно подключать модули!
Надо брать и выдирать из них нужные участки кода и ставить их в свой
модуль. :)))

Sapersky, а я из вредности промолчал про линкер, тем более, что у него
всетаки немного кособокие мозги и иногда он чипляет ваще не нужные
штуки.


 
XProger ©   (2006-02-05 13:15) [33]

Cash, да тут человек не в состоянии System и SysInit прописать, какой ему там до "выдирания" частей... ;)


 
antonn ©   (2006-02-05 14:02) [34]

XProger ©   (05.02.06 10:47) [30]
я к тому, что если даешь ссылку на проект и его выходной размер - надо бы и позабоиться о том, чтобы в комплекте было все для компиляции под этот размер. А то мне еще указывают, что то нужно выпотрошить сначала, но "программу сделал он"... Я просто скомпилил пример по ссылке, ничего не трогая, в итоге не получил указаный размер. Могу так же сказать - "научись сначала программить, а потом выкладывай" :)
насчет того, что это не "программа" - в силе:)


 
XProger ©   (2006-02-05 14:21) [35]

antonn, промолчал - за умного сошёл бы... ;)
http://xproger.mirgames.ru/?id=1&doc=delphi_min
И что такое программа? ;)


 
Cash ©   (2006-02-05 17:33) [36]

Товарищи, товарищи... ну что вы собачитесь?...
лучше сразу стреляйтесь!!!... (с) {из мною ненавистного шоу "К барьеру"}

XProger ©   (05.02.06 14:21) [35]:
Из учебника мною великоуважаемого Виктора Гавриловича Хорошевского
"Архитектура вычислительных систем" делаю вывод, что:
"Программа - суть алгоритм работы вычислительного средства,
направленный на решение осмысленной и представленной задачи, будь то
логическая или математическая формула или их комплекс."
Хм-м-м-м-м... программой всетаки я твои проделки назвать не могу!

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

"Экстремизм в жизни уместен, но его пропоганда - нарушение морально-
этических устоев общества!" (и какой буржуйский призидент это сказал?)

Ну, как? трактат пишеварению доступен? :)))


 
XProger ©   (2006-02-05 18:03) [37]

Cash,
промолчал - за умного сошёл бы... ;)
"осмысленная задача" - написать 4k intro посредством визуализации некоторых математических функций...
Математики в её решении достаточно, так что перечитай своего многоуважаемого ;)
Кстати, вот http://www.pouet.net/prod.php?which=17447&howmanycomments=25&page=0 - нарочно увеличенная до 4096 байт версия программы ;)


 
antonn ©   (2006-02-05 18:17) [38]

XProger ©   (05.02.06 14:21) [35]
http://xproger.mirgames.ru/?id=1&doc=delphi_min

скачал оттуда delphi_min, компильнул, получил хз что в 14,5Кб (всякими upx"ами прошу мне зубы не заговаривать:)). Если честно, так и не понял, нафига этот архив вообще нужен, и те модули измененные, в которых и нет нифига. Толку от них никакого.

> И что такое программа? ;)

я специально в кавычках писал:)
"Программа - суть алгоритм работы вычислительного средства,
направленный на решение осмысленной и представленной задачи, будь то
логическая или математическая формула или их комплекс."

Те демосцены, что были в X4k.dpr, кроме как за скинсейвер не пойдут, и то, даже до него еще далековато, так что не имеют практического применения. "Просто попантовацца" :) Ну не пойму, где тут гордость, если этим нельзя пользоваться для решения каких то задач, даже есть оно недобльшое по размеру:)
кстати, в оперативке эта "гордость" скушала 15Мб, у меня reget менее требовательный, а уж функционал у него куда шире (я бы даже сказал - офуительно гигантский:))

XProger ©   (05.02.06 18:03) [37]
"осмысленная задача" - написать 4k intro посредством визуализации некоторых математических функций...

о да-а-а, задача сверх нужная ):


 
XProger ©   (2006-02-05 18:22) [39]

antonn, я вижу, ты в очередной раз гордишься своим незнанием Delphi? :) Постыдился бы...


 
antonn ©   (2006-02-05 18:42) [40]

XProger ©   (05.02.06 18:22) [39]
antonn, я вижу, ты в очередной раз гордишься своим незнанием Delphi? :)

скажи, что такое "знание Дельфи".


 
XProger ©   (2006-02-05 18:51) [41]

antonn, совокупность знания многих вещей в частност тех о которых я уже упоминал... кончай оффтопить!


 
antonn ©   (2006-02-05 19:12) [42]

XProger ©   (05.02.06 18:51) [41]
antonn, совокупность знания многих вещей в частност тех о которых я уже упоминал...

ты конктерно сформулируй:)

> кончай оффтопить!

хо-хо-хо, сам не лучше. постыдился бы... :))


 
Cash ©   (2006-02-06 15:56) [43]

От зафлудили то... во зафлудили...
Блин, топик ветки в пору на "anton vs XProger" менять. :)))
Щас как модеры придут, как откусят одному молодому человеку
кой что по мелочи, чтоб не флудил почем зря! :)))
Я не знаю как Антону, а мне уже давно стало кое что ясно.

Да и ваабще, дайте в конце концов дельный совет хозяину ветки,
как ему свою игруху, сделанную на DelphiX(подчеркиваю!),
минимизировать по лучше.

Я бы так сказал:
- держишь ресурсы внутри проги, выкидывай их в отдельный файл.
- пакуй прогу UPX-ом или ASPack-ом.
- пакуй ресурсы Zip-ом или Cab-ом или сделай свой формат.
 (кстати, про свой уникальный формат обжатия рисунков без потерь
  я не таращусь как некоторые про их достижения в написании легких прог!)
- установи себе InstallShield, который вместе с Delphi идет и пакуй все им.

... И будет твоя прога легка как перышко!... :)))


 
Don Nikola   (2006-02-06 16:21) [44]

Для хранения ресурсов можно посмотреть в сторону http://www.gamedev.ru/download/?id=2950

А вместо InstallShield взять NSIS в nullsoft.com и далее по ссылкам.


 
XProger ©   (2006-02-06 16:54) [45]

Cash, если гражданин распространяет свою, написанную на DelphiX программу, в архиве, то максимум сэкономит - 10 кб :)

Совет автору ветки: пиши на чистом API, и будет тебе небольшой размер, в противном же случае - не смей задавать подобных вопросов... ;)


 
DeadMeat ©   (2006-02-06 17:07) [46]


> Совет автору ветки: пиши на чистом API, и будет тебе небольшой
> размер, в противном же случае - не смей задавать подобных
> вопросов... ;)

Это знаешь примерно на что похоже?

- "Какую видео карту мне выбрать для игр?"
- "Покупай приставку, в противном же случае - не смей задавать подобных вопросов"

или

- "Какой файерволл мне лучше поставить?"
- "Переходи на линукс, в противном же случае - не смей задавать подобных вопросов"

Человек спросил, как ему размер уменьшить... Я не думаю, что он спросил на чем ему переписывать всю его игру.


 
XProger ©   (2006-02-06 17:13) [47]

DeadMeat, перечитай топик перед тем, как постить что-либо... ответ уже дали, а я совет дал :)


 
antonn ©   (2006-02-06 19:15) [48]

Cash ©   (06.02.06 15:56) [43]
- держишь ресурсы внутри проги, выкидывай их в отдельный файл.
- пакуй прогу UPX-ом или ASPack-ом.
- пакуй ресурсы Zip-ом или Cab-ом или сделай свой формат.
(кстати, про свой уникальный формат обжатия рисунков без потерь
 я не таращусь как некоторые про их достижения в написании легких прог!)
- установи себе InstallShield, который вместе с Delphi идет и пакуй все им.

согласен с первым и третьим. Второй для фанатов "внешнего осмотра файла", которым важно, как характеристики его файла будут выглядеть в св-вах проводника. Если делаешь дистрибутив, он все равно сжимается архиватором, смысла в upx"е в этом случае нет.


 
Bogdan1024 ©   (2006-02-06 21:43) [49]

Речь шла про маленький размер эхэ в составе дистрибьютива.
- держишь ресурсы внутри проги, выкидывай их в отдельный файл.
А зачем? Ведь архиваторы сжимают одинаково хорошо эхэ с ресурсами как внутри, так и отдельно. По-моему, эхє+ресурс даже лучше чем отдельно...но я всё равно держу их отдельно.
- пакуй ресурсы Zip-ом или Cab-ом или сделай свой формат.
опять-же, это не повлияет на размер дистрибьютива, кроме того я не знаю как это делать :) (Как?)
- установи себе InstallShield, который вместе с Delphi идет и пакуй все им.
Всмысле, делать инсталяхи? Дык голый архив походу меньше весит килобайт на 100.


 
Cash ©   (2006-02-07 08:27) [50]

Bogdan1024 ©   (06.02.06 21:43) [49]:
InstallShield или подобные умеют сжимать другими методами нежели
WinZip, RAR или 7-Zip. Они умеют сжимать уже сжатую информацию!

А то как же так, взял я Commandos 3 на одном диске, пришел,
поставил, он у меня четыре раза распаковывался, а потом уже сказал,
мол: "Парень, я готов, давай ставиться!"! И размер в норму - 3,5 Гб.

... А зачем? Ведь архиваторы сжимают ...
В виде отдельного файла ресурсы позволяют производить над собой
больше опираций: сжатие, модернизацию, изменение компонентов, и т. д.

А перед архивированием все файлы всеравно в одну ленту переписываются,
так что с той стороны, с которой ты посмотрел разницы на самом деле нет.

P. S.:
Чесно говоря странно, парню сжать охота, но он не принимает такие
тривиальные вещи.


 
DeadMeat ©   (2006-02-07 08:46) [51]


> XProger ©   (06.02.06 17:13) [47]

Может быть я не прав, но первое твое сообщение не очень похоже на совет.. А скорее на "ответ" на вопрос... Точнее на его попытку.

ЗЫ. Топики я всегда читаю с начала и до самого конца.


 
Nic ©   (2006-02-07 09:48) [52]

Для Shareware игры нормальный размер ~ 1-3,5 Мб.
Если делать больше - игру многие не смогут скачать.  => Размер всей распакованой игры может достигать в среднем 3-10 Мб. О каких килобайтах речь? :)


 
Nic ©   (2006-02-07 09:52) [53]

Хотя приятней иметь exe не 450 Кб (это было при использовании VCL + OpenGL API при создании красивой демки), а 190 Кб (из VCL только SysUtils). Если ещё избавиться от SysUtils (сделать это несложно) и взять компилятор помладше, то исполняемый файл будет меньше 100 Кб. Почуствовать разницу 450Кб и 75? В шесть раз. Приятно. Это без всяких там UPX и иже с ними.


 
XProger ©   (2006-02-07 11:03) [54]

Nic,
http://reflexive.com/ - нормальная шаровара, меньше 10 мб в дистрибутиве не весит, и стоит не менее 10 у.е. :)
Delphi компиляторы без VCL дают не более 6 кб прироста... (проверенно)

Cash, никакой InstallShield не "пережмёт" 7z (проверенно)


 
Bogdan1024 ©   (2006-02-07 11:38) [55]

Для Cash:
Ну так рар тоже умеет сжимать уже сжатые файлы, и Ace умеет, и куча кого ещё умеет, но всё равно голый архив легче чем инсталятор. Или ты хочешь сказать что инсталщилд сжимает лучше рара?
Чесно говоря странно, парню сжать охота, но он не принимает такие
тривиальные вещи.

Ты о чём?


 
Cash ©   (2006-02-07 11:53) [56]

Bogdan1024 ©   (07.02.06 11:38) [55]:
Да голый архив легче! Это правда! Давай я тебе дам мой архив,
в котором используется моя методика сжатия в два раза лучше
сжимающая чем RAR. Я просто дам тебе файл с расширением *.ddw.
Что ты сним сможешь сделать? Ражать не сможешь, у тебя нет моей
программы. Сможешь только выделить этот файлик, потом Del нажать,
а затем Enter. Это будет самое рациональное, что ты сделаешь с
моим архивом. Ну дак как? все еще думаешь, что архивы лучше
инсталлеров?

InstallShield в его полном исполнении сжимает файлы сжатые любым
архиватором создавая общий процент сжатия до 10 и выше раз лучше
чем 7-Zip. Так же можно применить спец опцию крутого обжатия, и
не архивированный дистрибутив будет весить меньше чем архив RAR.


 
Cash ©   (2006-02-07 11:59) [57]

Увидел в своем посте опечатку, оборжался просто! :)))
Хотел сказать "Расжать", а что получилось то! :)))


 
Don Nikola   (2006-02-07 13:00) [58]

2Cash:
>Давай я тебе дам мой архив, в котором используется моя методика сжатия
>в два раза лучше сжимающая чем RAR.

А можно поконкретнее? Хочешь сказать что твой пакер способен сжимать любой блок данных лучше чем rar в два раза? Если так, то было бы интересно узнать используемый метод(хотя бы название, если используется общеизвестный метод), необходимые ресурсы на сжатие/расжатие и время для этого необходимое.


 
Cash ©   (2006-02-07 14:35) [59]

Don Nikola   (07.02.06 13:00) [58]:
Время и энтропию сам посчитай, там все каноническое.
Дважды адаптивный Хаффман и LZW метод. (с моей реализацией)
Все над словарем (или окном) в 32 штуки (тысячи) элементов.
Сжимает и достает дольше чем RAR, но быстрее чем 7-Zip.
А если с InstallShield вместе, то игруха ваще нискока не весит
в сравнении с ее распакованным состоянием. Против 10 мегов
всевозможной лабуды (звуки, графика, три-четыре бинарника)
говорит один инсталлер размером всего в 2,5 мега.

Следует учесть, что рар сам с собой соперничеет, иногда из под него
вылезают архивы разных размеров, полученные от одних и тех же файлов.


 
Don Nikola   (2006-02-07 16:39) [60]

2Cash:
Ясно. Радует что кто-то сам что-то пишет, а не берет готовые решения.
Однако, такой пакер хорош для распространения инсталяхи, для real-time извлечения он не годиться. Для больших игр такой метод не очень подходит, а для шаравар или не критичных по времени программ вполне подойдет.


 
Bogdan1024 ©   (2006-02-07 19:09) [61]

К Cash: Так так и говори что здорово было бы своим методом архивировать, а то инсталщилд-инсталщилд...
К Don Nikola: скачал. А где документация? Непонятно ничего :) Блин, проще своё что-нить придумать чем в твоём копаться, тем более что там половина вообще на ассемблере (который я не шарю). Хоть бы коменты написал.


 
Don Nikola   (2006-02-07 20:46) [62]

2Borgad1024:
Вообще-то, там папочка была, Examples называлась.
Использование проще некуда.
Подготовка:
1) Кладешь все нужные файлы в папку Utils\Packer\Data
2) Запускаешь Utils\Packer\NPacker.exe
3) Полученый файл Data.dat, который можно переименовать, кладешь со своей программой

Использование:
1) Подключаешь юнит NArc.pas
2) Загружаешь заголовок архива функцией OpenArchive
3) Загружаешь нужные файлы из архива функцией LoadFile, которая возвращает указатель на область данных
4) Когда данные больше не нужны вызываешь FreeMem
5) Когда архив больше не нужен вызываешь CloseArchive

Если честно, то стоит пять минут почитать то что между interface и implementation, то практически все вопросы должны отпасть, а после чтения от implementation до end и все остальные тоже. Там все весьма просто.
А в ассемблер вообще нет смысла соваться, если ты его не знаешь, главное что оно работает. Это не наезд, а просто совет.


 
Bogdan1024 ©   (2006-02-07 21:30) [63]

Ту Don Nikola
Вообще-то, там папочка была, Examples называлась.
Я давно это заметил.
Использование проще некуда...
Вот так бы сразу. Неужели тяжело это вставить в коментах в примеры? Щас поюзаю...
Если честно, то стоит пять минут почитать то что между interface и implementation, то практически все вопросы должны отпасть, а после чтения от implementation до end и все остальные тоже. Там все весьма просто.

А если прочитать от начала до конца всё что написано в юнитах компонентов DelphiX, то все вопросы тоже должны отпасть :))) Но DelphiX на то и гуд что программисту не обязательно иметь ответы на все вопросы чтобы его юзать.
А в ассемблер вообще нет смысла соваться, если ты его не знаешь, главное что оно работает. Это не наезд, а просто совет.
А я дурак, не знал ассемблер, но всё равно сунулся :))) Как можно в него сунуться не зная его?
Я не понимаю почему ты так усердно защищаешь  свою точку зрения по которой у твоих компонентов не должно быть документации.


 
Don Nikola   (2006-02-08 00:09) [64]

2Bogdan1024:
NArc от DelphiX отличается также как MSDOS от XP.
Эта библиотека была написано под свои собственные нужды и изначально не планировалось выкладывать ее на всеобщее обозрение и уж тем более писать доки к ней. Она была выложена как пример библиотеки для хранения игровых ресурсов для одной из тем на gamedev.ru
Если бы я выложил ее как законченный продукт, то конечно добавил бы и доки и примеры.
Прощу прощения что несколько агрессивно сформулировал предложение про асм.


 
Don Nikola   (2006-02-08 00:10) [65]

2Bogdan1024:
NArc от DelphiX отличается также как MSDOS от XP.
Эта библиотека была написано под свои собственные нужды и изначально не планировалось выкладывать ее на всеобщее обозрение и уж тем более писать доки к ней. Она была выложена как пример библиотеки для хранения игровых ресурсов для одной из тем на gamedev.ru
Если бы я выложил ее как законченный продукт, то конечно добавил бы и доки и примеры.
Прощу прощения что несколько агрессивно сформулировал предложение про асм.


 
Don Nikola   (2006-02-08 00:12) [66]

Глючный форум...


 
-SEV- ©   (2006-02-08 01:22) [67]

Я что-то тоже не могу пропереть, нафиг экзешники жать. "Вот прога, написаная на Делфе, весит 500 б !!! Всё! Правда делать она ничего не умеет, да и вряд ли будет уметь, ибо проще перейти на ассемблер, чем работать в Делфе, ограниченной во всех своих фишках". Зачем вырезать из делфы ВСЁ ради того, чтобы экзешник весил 500 байт и ничего не умел? Какой извращенец будет писать проги в делфе, учитывая все капризы памяти и прочего оборудования, когда можно заплатить 20 кб (всл не трогать) и писать в более-менее терпимых условиях? Прошли времена ДОСек, когда за каждый занятый байт можно было вены порезать. По-моему на винтах по 100 гигов найдётся местечко и для 500 кб...


 
antonn ©   (2006-02-08 05:40) [68]

-SEV- ©   (08.02.06 1:22) [67]
Я что-то тоже не могу пропереть, нафиг экзешники жать. "

это фанатизм, что то вроде синдрома "пенисо-мера" :)


 
Cash ©   (2006-02-08 11:16) [69]

antonn ©   (08.02.06 05:40) [68]:
Не фанатизм, коллега, а экстримизм (в некоторых случаях
сопряженный с терроризмом)! :)))


 
XProger ©   (2006-02-08 11:54) [70]

-SEV-, "Какой извращенец будет писать проги в делфе, учитывая все капризы памяти и прочего оборудования" - Я! :)
Мне нравится понимать как оно работает и откуда берётся каждый байт, также мне нравится полностью контролировать свою программу и "самому" её писать.

antonn, я уже давно убедился в ущербности твоего мышления...


 
Don Nikola   (2006-02-08 12:40) [71]

Если попытки запихать delphi"евый екзешник в com это и в самом извращение, то написание небольших утилит, шаравар и прочего небольшого софта на WinApi это весьма разумная практика. А вот делать тетрис/калькулятор на монструозных VCL/DelphiX/etc это уже верх маразма.
И высказывания, что у всех сейчас винты по 250Gb и памяти по 1Gb я считаю некорректными. Если вы делаете что-то, что будет качаться через инет, особенно когда код занимает больше данных, то тут серьезно нужно думать о том как написана программа.


 
antonn ©   (2006-02-08 12:44) [72]

XProger ©   (08.02.06 11:54) [70]
antonn, я уже давно убедился в ущербности твоего мышления...

не обманывайся.


 
XProger ©   (2006-02-09 22:24) [73]

http://xproger.mirgames.ru/tmp/Form1.rar - очередная безделушка... ;)


 
rts111 ©   (2006-02-09 23:34) [74]

Вопрос к XProger-у , а как облегчить dll, может знаешь?
Спасибо зарание!


 
XProger ©   (2006-02-10 00:03) [75]

rts111, Аналогично, только не удалять _InitLib (но подчистить можно :)
unit SysInit;

interface

procedure _InitExe;
procedure _halt0;
procedure _InitLib(Context: PInitContext);

var
ModuleIsLib : Boolean;
TlsIndex    : integer = -1;
TlsLast     : Byte;

const
PtrToNil: pointer = nil;

implementation

procedure _InitLib(Context: PInitContext);
asm
LEAVE
RET 12
end;

procedure _InitExe;
asm
end;

procedure _halt0;
asm
end;

end.


unit System;

interface

procedure _HandleFinally;

type
TGUID = record
 D1: LongWord;
 D2: Word;
 D3: Word;
 D4: array [0..7] of Byte;
end;

PInitContext = ^TInitContext;
TInitContext = record
 OuterContext   : PInitContext;
 ExcFrame       : pointer;
 InitTable      : pointer;
 InitCount      : integer;
 Module         : pointer;
 DLLSaveEBP     : pointer;
 DLLSaveEBX     : pointer;
 DLLSaveESI     : pointer;
 DLLSaveEDI     : pointer;
 ExitProcessTLS : procedure;
 DLLInitState   : Byte;
end;

implementation

procedure _HandleFinally;
asm
end;

end.


 
Bogdan1024 ©   (2006-02-10 00:15) [76]

Don Nikola
Ну и не работает нифига %)
Кидай or не кидай в папку дата файлы => всё равно NPacker.exe вылетает с ошибкой. Если запускаешь в дебугере, то он говорит что-то про ошибку чтения 32, если хочешь кину скрин.


 
Don Nikola ©   (2006-02-10 12:38) [77]

2Bogdan1024:
Естественно, он не может открыть себя для чтения, так как ты запускаешь его из папки Packer\Sources, а нужно из Packer, положи его туда и запускай оттуда.
Еще раз повторяю все делалось под себя, если что-то не работает посмотри в коде, там все довольно ясно. Я могу сказать только одно - у меня все работало 100%.


 
rts111 ©   (2006-02-11 03:35) [78]

XProger, ты гуру!


 
rts111 ©   (2006-02-12 04:06) [79]

Смотрите мою маленькую программу, сжал upx-сом, получилось 15 Kb.

http://flora3d.narod.ru/archive/flora3dm.zip


 
XProger ©   (2006-02-12 12:09) [80]

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


 
Galiaf ©   (2006-02-12 12:36) [81]

XProger ©   (09.02.06 22:24) [73] - я тут решил скачать в flashget"e, запустил, включил, смотрю, а её уже и нету. Вот теперь гадай, скачал или не скачал :).


 
XProger ©   (2006-02-12 12:42) [82]

Galiaf, читай Manual к flashget"у, я тут не при чём... ;)


 
Galiaf ©   (2006-02-12 14:01) [83]

Тебе никогда не козалось что ты СЛИШЬКОМ увлекаешься сжатием своих творений, я например не чувствую разницы, скачивать 1 килобайт или 300 килобайт, при том что у меня медленный инет.


 
XProger ©   (2006-02-12 14:15) [84]

Galiaf, думаешь я твой трафик экономлю? ;) Многие вещи использовать/контролировать удобнее если писать на чистом API :)


 
Galiaf ©   (2006-02-12 15:14) [85]

Да, возможно, ты опытнее будешь :)


 
Gnobobel   (2006-02-13 21:06) [86]

XProger

> Многие вещи использовать/контролировать

Использовать? Контролировать конечно проще, но использовать не легче. Вот например не секрет, что на дельфях можно писать дрова, но ведь это достовляет больше гемора, чем на C или асме (дельфя то не для этого предназначалась!). Каждой задаче свой инструмент.


 
XProger ©   (2006-02-13 21:26) [87]

Gnobobel, мне удобнее использовать чистый WinSock, OpenGL, WinAPI, т.к. я понимаю принципы его работы и мысль "найти свойство/компонент которого явно нет" мне в голову благодаря этому не приходит :)


 
Freeker ©   (2006-02-16 10:13) [88]

Короче парень! Не слушай этих экспериментаторов, бери PKLite 32. Я сам прогу писал с DelphiX на D6. Так вот экзешник компилился 1,24 Мб, а после сжатия был 760Кб. По моим наблюдениям PKLite дает 25-40% сжатия таковских прог.


 
Nic ©   (2006-02-16 10:20) [89]

Короче, парень! Бери OpenGL + WinAPI и если exe-шник дорастёт до 250 Кб, то это должна быть очень крутая игруха :) Если поизвращаться (без SysUtils), то exe утопчется до 150 Кб. А потом бери упаковщик и сжимай, будет ещё меньше.


 
Gnobobel   (2006-02-16 12:50) [90]


> XProger ©   (13.02.06 21:26) [87]
> Gnobobel, мне удобнее использовать чистый WinSock, OpenGL,
>  WinAPI, т.к. я понимаю принципы его работы и мысль "найти
> свойство/компонент которого явно нет" мне в голову благодаря
> этому не приходит :)

=))
Да, но ведь расставлять кнопочки по формам (как лам =) ) проще и быстрее (=> удобнее)!


 
Digitman ©   (2006-02-16 13:27) [91]

Удалено модератором


 
antonn ©   (2006-02-16 17:16) [92]

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


 
XProger ©   (2006-02-16 18:31) [93]

Gnobobel, в зависимости от задач. Я VCL использую так же как и ООП - только там, где без него будет очень сложно и не понятно :)


 
Bogdan1024 ©   (2006-02-17 17:58) [94]

Удалено модератором


 
XProger ©   (2006-02-17 21:17) [95]

Удалено модератором



Страницы: 1 2 3 вся ветка

Форум: "Игры";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.74 MB
Время: 0.046 c
2-1164489332
kami
2006-11-26 00:15
2006.12.10
Потокобезопасность TStringList


1-1161859464
17Landgraf
2006-10-26 14:44
2006.12.10
Как узнать вызываемую фу-ию из DLL


3-1160129268
alucard
2006-10-06 14:07
2006.12.10
Не могу переконвертировать *.db в *.txt


2-1164112087
Сатир
2006-11-21 15:28
2006.12.10
сравнение двух булевых массивов


2-1164319075
Draught
2006-11-24 00:57
2006.12.10
При старте приложения показываются все формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский