Нужно разработать оболочку типа веб-браузера, но с перехватом ссылок (обращений в инет) и управлениям скаченными файлами (картинки и прочие ресы), типа своего кеша. Файлы хранить в папке, где .ехе лежит. Файлы могут периодически тереться.
Сам браузер не имеет кнопок управления, только запустить и закрыть, ну может еще на весь экран или окно. Остальное все прописывается в коде. Браузер должен уметь показывать Флаш и перехват ссылок именно от флаша.
Кто в теме и хочет помочь, более детальное ТЗ по ЛС дам.
Все еще актуально. Реально это тема для начинающего изучать среду и язык (например, Дельфи). Вместо бесцельного создания тест-примеров по книжке, можно создать реально нужную простую программу, получить хорошие навыки и сделать полезное для игры.
Со своей стороны готов просуппортить на уровне идей и даже готовых методов. Очевидно, я могу эту программу сделать сам (все для этого есть, токо нет дельфи на компе ), но не все нужно делать мной одним, если что-то подъемное для других. У меня есть другие задачи, которые пока могу поднять только я.
Соответсвенно, перефразирую:
Нужно сделать простую программку, уровня курсовой работы первого курса технического ВУЗа (1-2 вечера) при активном участии тьютора (меня). На выходе - уверенные знания в области Веб-контролек борланда и вера в себя "я могу и умею".
В качестве референса спросите Warshipa, как он теперь "не знает" флаш Главное, желаение сделать хорошее дело себе и нашей игре.
А может на C#? Я тут глянул, можно сделать на движке IE нормально все, с перехватами и прочим. Ну не прёт меня делфи на с++ это сильно сложнее. Хотя и под делфи есть идеи как это сделать, но C# значительно проще.
Ну, я думаю, особой разницу нету, на чем. Главное, чтобы работало и потом это можно было поддерживать Хотя, это скорее вопрос к Алексу...
Но вот на двиге IE... Хз, как там в C#, но на VCL C++ Билдера такое не получится точно (пытался, обжегся, т.к. "сильно не то"): компонента TWebBrowser - это IE в прямом смысле этого слова, она тянет все настройки из системы, включая и папку для кэша.
Дело не в папке, а в наличие нужных прерываний. То, что стандартные дельфевыые (билдеровые - не суть, они просто на шаг старее идут) управляют ИЕ, это как раз гут
А подменять нужно ссылки, а не кеш ИЕ. Лезет страница (флашка) в инет, смотрим куда, есть ли файл, оп-а, есть, заменяем ссылку на локальный файл и все, пусть лезет. То есть сама страница (флашка), работает штатно.
на чем делать пофиг, Дельфи назван, как наиболее простой путь + мне понятное для поддержки и развития.
Если все это проще в С#, то можно и в нем. Но есть один минус С-шарпа, это потребность .НЕТ. Казалось бы, качаешь ты клиента на 500Кб, а чтоб его запустить нужно еще 100мб
на Дельфи есть галочка, компилять с библиотеками. Ехе пухнет на 1-2мб, но более ничего не просит.
В ЛС написали уже несколько человек - спасибо всем, кто хочет помочь.
Если у кого-то нет времени или желания делать всю прогу, поможет идея и кусок кода (наводка на нужный метод), как именно подменять запрашиваемый файл на свой.
Хз, я в делфи глянул, там вроде нет возможности подставлять документ в компоненту, в этом плане у с# все ок. По поводу фреймворка.. у 99.99% уже есть он. Тем более в висте уже идет с системой.
Вобщем, Алекс, кинь мне на мыло задание, желательно с готовыми флешками, чтобы знать как они себя ведут, потому что одно дело прерывания браузера отслеживать, другое дело чисто флеша...
Ну, для примера все есть. Тут напишу.
тестить можно на
И на
Эта грузит ХМЛ файлы, картинку и мр3
Кульминацией работы должна стать работа через прогу с сетевыми кубиками
Тут несколько переходов через текстовые старницы в флашки и редиректы между страницами. Влючая авторизацию на сайте.
ТЗ если свести к краткости.
Программа-браузер, заточенная на конкретный сайт, умеет хранить кэш и, главное, управлять им - проверять его актуальность спец запросом (в ХМЛ) на предмет даты устаревания и тереть содержимое.
Похожа на пауков, делающих офлайн копию сайта, но пропускает все обращения не к статичным файлам, то есть к .php
Вобщем посмотрел я еще разок просто так не выйдет перехватывать. Фактически тут не столько браузер нужен (хотя если нужно показывать хтмл, то нужен браузерный компонент. Кстати, в дельфи твебконтрол не показывает флеш вообще никак ) сколько обычный флеш плеер с возможностью закачивать флеш из инета вручную. Короче не совсем внятно, но как-то так выходит.
Далее.
Переходим ближе к телу. Стандартный способ играть флешку на форме это использование АктивХ компонента. Все бы хорошо, но просто так, его ивенты не перехватывают (точнее вообще не перехватываются, кроме тех, для которых есть интерфейс) Поэтому надо этот интерфейс прикручивать изнутри флеша. Это можно, вот пример
ЗЫ: Если будет нормальный интерфейс к событиям флешки. то реализовать кэш не проблема... оно у меня даже уже почти есть
WebBrowser1.Navigate('http://.......swf');
работает и грузит флашку.
Проверял - Хомо делал рабочий пример.
Хз, у меня в 2006 студии не работает, вылетает в глупую какую-то ошибку. Но не в этом суть. Флеш никому ни о чем не говорит, когда что-то делает. Надо делать все, что должно перехватываться вот таким образом
on(click) {
fscommand("sendCmd", 1);
}
т.к. писать свой контрол для флеша нереальн, а поиск по гуглу выдает только использование АктивХ компонента.
Вот это тоже инфа
Там есть про перехват ссылок.
Но, если перехват не работает для флашки, то да, задача анрил.
Нужно это подтвердить или опровергнуть.
Изменять флашку под прогу - не вариант. Интересно именно перехватить ее обращения.
Не стоит у мя дельфи... сча буду качать турбо 2006
Хз, покопаю еще, но я не нашел такого пока. Т.е. это искать компонент сторонний скорее всего придется. Но в стандартном АктивХ событий очень мало передается.
У TWebBrowser есть обработчик событий на начало закачки файла и окончание, осталось только подумать, как этот файл подменить и как перехватить переход на него из флаш.
нашел портабл турбо дельфи - скомпилял простой пример, который раньше работал без проблем (сам видел!) - не работает в WebBrowser .swf - ошибка лезет, причем Иешная, он ее как строку читает и ругается на символы.
Ясности нет почему так, может раньше был плааер 9, сча 10, но не понятно. На форумах по дельфям пишут, должна работать по умолчанию без проблем.
С перехватом обращений из флашки (если заработает) нужно это тестить, если нельзя, то и вопрос тогда отпадет до "технической возможности"
У меня есть подозрение, что эта ошибка связана с версие IE. С перехватом пока ищу инфу и варианты.
может! у мя и ИЕ обновлялся до 8
Просто у дельфи есть неприятная особенность (кроме некоторых других еще ) Ее компоненты сильно завязаны на версиях файлов ОС. Т.к. ребята пишущие их в большинстве случаев просто малограмотные. Я смотрел исходники Инди, я плакал. Честное слово.
Вот она тестовая загадка
Дома на вин ХР сп3 не работает
На работе на виста ульт сп2 х64 работает
да, с таким подходом завязки на че-то внутри ОС, дельфи не канает.
Прикрепленные файлы
Project1.rar ( 176.25 килобайт )
Кол-во скачиваний: 562
Алекс, а как мувик второй грузится из флеша? Я это о чем, попробовал даже сделать новый класс, производный от Flash AX, все равно там не нашел ничего интересного... хотя некоторые функции и методы еще поковырять можно.
Кстати, а почему все же не сделать интеграцию со своим клиентом? Так будет более логично, если ты хочешь именно отдельным клиентом это все показывать, а не стандартными браузерами.
Грузится обычно, как любой файл, идет запрос по ссылке пути.
Вся эта буча и овзникла, чтоб выяснить, что можно, что нет. Очевидно, крайне хотелось иметь клиента, играющео браузерные флашки, чтоб "не делать" клиента вообще.
Кстати хз в чем прикол, но у меня флеш кэширует сам все, видимо это кэш IE как-то используется. Т.е. загрузка идет молниеносно. второй флешки.
ИЕ кэширует и Опера тоже - все гут. Но это может быть настроено ко стиранию. Это мешает (на тестах кубиках обжегся), когда обновляется на серве файл.
Потому и была идея клиента игры, как описал.
Тогда его можно давать не пустым, а спредустановленым кэшем в .рар, чтоб он не лазил вообще в инет. А кэш по мере устаревания сам обновится.
Идея возникла, когда на ЖПРСе посидел, имея клиент можно и с него играть.
используемый двиг браузера должен (для этой цели) уметь перехватывать событие вылеза в Инет (обращения куда-то). Если он это не умеет, то далее можно не копать - не реализуемо.
Флашем управлять нечего - нужно перехватывать его обращения в инет и подменять ответ на эти обращения. То есть, флаш вообще не должен знать, где он.
То, что это можно сдлеать в принципе - факт - пишут же свои бразузеры или файрволы, которые знают, кто куда лезет и могут этим управлять.
Другое дело, можно ли это сделать БЫСТРО и просто на С++ или Дельфи. Если в них нельзя сделать свой браузер, то и говорить не о чем.
Кстати ребята если нужна будет помощь то стучитесь =) . В программинге конечно не так давно... но учусь и стараюсь =) (2 года занимаюсь программингом на С++ и прочих).
Если скажем так... на билдере навять свой мини браузер - дело одного вечера. Но это уже готовый браузер. То есть оболочка уже сделана борландовцами... но перехват пакетов (собственно в пакетах ссылки) там не сделаешь. Надо делать что то типа сниффера и перехватывать тогда всё. Как по мне глупо. Намного лучше будет скажем сделать так:
Если требуется соеденение с сервером, или скажем с той же инет страничкой ( просто не до конца ясно к чему будет ити конект) то можно просто сделать всю графику чисто в клиенте (т.н. то что Алексус просит написать) и просто скажем через сокет отправлять данные на сайт и так же принимать и обрабатывать.
Ну а если надо просто получать какие то данные из сервера так тут проще некуда ))))) клиент-сервер сокеты и вперед из песней)))
"Перехватить обращение в инет нельзя (точнее можно, но заблокировать его нельзя, по крайней мере мне этот способ не известен). Фаервол работает по другому принципу, и писать его для такой задачи тоже не вариант."
Фаер как драйвер работает. NDIS драйвер.
Перехватывать пакеты тоже не сложно так что ошибаешся =). Сам делал. Отфильтровать тоже можно - проксю сделать и всё.
Пардон ребята но реально не сильно просто вежаю в суть =)
Да уже ясно, что это на борланде не сделать и это не просто. Но можно точно, браузеры же пишут свои с нуля, а там точно есть управление кэшем и перехват с подменой на файл из заначки.
Приоритет у задачи низкий, тк и без этого все будет работать, просто жрать трафика в разы больше.
))))))))) улыбнуло))))
Борланд это ИДЕ )) точнее Билдер, но не важно. А реально ты можешь и на Dev C++ это сделать. Просто у Билдера нету готовых таких контролов. Да и зачем они? оО
Просто Вижуал более заточен под Винь, но есть очень мало вещей где нельзя сделать на Билдере то что можно на Вижуале. 99% решений абсолютно нормально можно сделать там и там. Просто как правило у Билдера хуже компилятор и потому выбирают Вижуал. Но С++ он и в Африке С++ =)
Браузер пишется очень просто... сокс 4 скажем, читаем мануал по HTTP протоколу. Изучаем как идет передача, то есть скажем так... "мини-язык" этого протокола. Делаем на соках браузер. Тут уже перехвачивать ничего не надо т.к. есть прямой доступ к данным.
Если вопрос в траффике то можно передавать сжатые файлы и их распаковывать (само собой не в ручную).
Просто как уже и говорил если надо перекинуть файлы с сервера на клиент (авто апдейтер) то я бы делал на чистых сокетах + сделал скажем что на сервере висят архивированые данные, на клиенте они когда докачиваются то распаковываются и бросаются в нужное место (само собой сильная економия траффика).
Если скажем надо передать какие то новости, текст (просто постоянно пытаюсь понять что конкретно надо и связать это с игрой, а т.к. очень много времени занимался лаунчерами то все мысли почему то о чем то таком...) то можно просто сделать ту же прогу, графику сделать скажем в том же Билдере (благо и контролов много есть, я про альфа контролы, да и сделать GUI там куда проще) а уже от туда с помощю тех же сокетов посылать HTTP запросы.
---------------------------------------------------------------------------------
Вчитываясь в последние слова
"а там точно есть управление кэшем и перехват с подменой на файл из заначки."
Понял что это всё таки касается авто апдейта. Как понимаю это для обновления файлов. То есть если скажем уже на харде имеется патч то чтобы не перекачивать его ещё раз а просто уже сразу инсталировать. В таком случае (если конечно я понял о чем речь) можно сделать так:
1) сделать проверку всех файлов
2) взять скажем md5 каждого файла и отправлять на сервер
3) получить от сервера результат или файл нуждается в апдейте или нет и получить его теперешний md5
4) проверяем скажем папочку Temp на наличие там файла с нужным md5
5) если нету орем серверу чтобы отослал файлик
6) приняли файлик, распаковали, удалили старый - поставили новый
7) так проверяем все файлы. Когда всё дошло до конца можно уже запускать игру и играть. Таким же мотодом можно сразу оповещать игроков о том что доступен новый апдейт.
Надеюсь чем то помог =)
Ясно =) чесно говоря проще флеш игру сделать на С++ чем написать браузер который будет реагировать как надо =). Просто сделать браузер из готового контрола дело простое. Но сделать браузер с нуля... я бы не стал.
Кстати звиняюсь за оффтоп.
delfin_ Вас ничего не связывает с игрой Mu Online ? o_O. И Вы случайно небыли в команде [BoR] или Devil Network? Просто очень знакомый ник к тому же если помню то тот парень тоже из Кишинёва был.
Я про простенький браузер))))
Ещё нужна помощь? или забили?
Есть конкретные предложения? Напиши Алексу в личку.
Давно бы написал , но запрещено
Кто мешает найти его мыло или аську?
Или пойти в Таверну и "набить" десяток постов
Зачем мне это? Не проще спросить в конкретной теме.
В делфи можно написать.
До сих пор не могу понять, почему ALexusB не хочет использовать стандартную архитектуру вида: клиент - флэш, сервер - С/С++||Джава|| C#...
Ну клиент в делфи , конект к серву , там уже флеш
Сервер? Там же будет на хосте уже ? Это же для браузерной игры типо?
зависит от хостера, если не брать сразу выделенный серв.
С# - это винда сразу.
Ява - да гут, но не везде на простых хостингах (как этот форум) есть.
Для анихронного (а не реалтай) времени РНР достаточно. А если будет не достаточно, то значит игра успешна и можно и переписать на яву
Зачем перехват ссылок? =) и т.п
не проще просто там оболочка , веб , остальное прост
Ну типо Foar.
C# Не всегда значит винда есть Моно. Но не суть, для серверной части все равно надо что-то другое, хотя те же самые модули написанные на С# можно использовать на хостингах, где есть возможность использовать сильверлайт.
Предлагаю эту тему не развивать, а поговорить именно о рукописном браузере с перехватом запросов флеша к инету
php по сокетам да, а как форум - нет.
Файсбук тот же на рнр был изначально. Всякие торенттрекеры с 100К юзерами (не онлайн сразу конечно).
Хостер прикроет - да, все так. Даже этот форум в былое время на агаве создавал нагрузки, что его резали (но это скорее жлобство агавы было).
Речь о стартапе на коленках с тестом в инете.
Я не хочу покупать сча даже виртуальный серв, вообще не хочу покупать и инвестить не ясно во что, при этом инвестить время - это да.
Ляжет хостер, куплю виртуальный хостинг - там в 5-10 раз ресурс больше, ляжет виртуальный - выделенный серв, ляжет он - будет кластер из сервов.
Другое дело, что эта цепочка должна себя окупать, это по идее и есть следствие "ляжет", тк это ж число юзеров, а раз игра нужна, то и минимальный доход на хостинг с нее должен быть.
Знаю одну фирму, что делает ММО с 3Д клиентом, там двига покупная типа Торк3Д, там серв тянет 200 юзеров онлайн всего (это пока у них все не отточено). У мя на рнр даже на обычном хостере будет не меньше
В браузере пошаговом пинги и онлайн реакции не так роляют. Хотя, конечно, в РНР озу не юзается вообще - вечное шуршание ХДД при любом обращении юзера (если токо кэш самой ОС и Мукскла будет).
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)