Собственно речь о движке! А точнее о фреймовом движке с использованием классических доисторических фреймов. Хотя с этой самой точки могу дико ошибаться и прошу поправить.
Итак, что есть и что хочу получить?(собственно ищу ответ на больной вопрос, решения не нашел, гуглил много но видимо так и не понял где искать и насколько глубоко собака зарыта)
Имеется файл index.php в нем описание проекта, новости, страница входа и тп инфа для всех кто зашел на сайт (т.е. реальная индексная страница без самой игры) с этим понятно
На этой же странице index.php есть проверка входа в игру и в случае если логин и пароль верны, то идет редирект (через функцию Header), на главную страницу игры island.php (такое название по названию проекта) + начинается сессия игрока и собственно игровой процесс.
Теперь проблемище!!!
Я хочу на этой главной странице сделать такую связку - основная страница контента (где происходят события) main.php расположена по всей ширине сверху до середины экрана + ниже расположить чат chat.php слева и страницу со списком игроков в локации online.php + совсем на дно положить всякие кнопочки, часики и главное форму для отправки сообщений в чат system.php. Т.е. имеется желание воссоздать некую схожесть с известными проектами БК, Карнаж и т.п.
Фрейм разделение страниц я сделал успешно! код в спойлере
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MMORPG || Island</title> <meta charset="utf-8" /> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <meta name="viewport" content="width=device-width; initial-scale=1.0">
Все бы прекрасно! Но! Вот допустим я нажимаю на странице main.php ссылку Выход и хочу выйти из игры + уничтожить сессию + сделать редирект на главную страницу index.php а у меня все это происходит внутри фрейма main - т.е. выходит своего рода матрешка!
Рыл инфу на тему того как это пофиксить и знаю же что надо как то через javascript это решать и возможно не только это, но конкретного примера так и не нашел
Возможно!!! Подчеркиваю возможно кто-то знает, как решить подобное или где можно почитать. Заранее спасибо!
Понимаю, скажете что я пытаюсь воссоздать прошлый век. Возможно. Но есть вполне четкая задача - каждая из страниц должна легко изменять размер с помощью мыши. Захотел пользователь раздвинуть чат выше = раздвинул.. Захотел основную страницу изменить = пожалуйста. Такие принципы реализованы во многих браузерных играх и я хочу воссоздать тот же принцип.
Другой вопрос - как победить фреймы и добиться чтобы нужные ссылки вели куда надо? Вот тут сложность
Пробовал воссоздать структуру дивами. Все отлично - но нет изменения размера блока пользователем. Да можно даже скрол в диве сделать но это все не то. Фрейм поудобнее будет для данной задачи. Потому ищу решение именно с фреймами.
Заранее благодарю. Надеюсь понятно изложил в чем сложность?
Так же прошу заметить, я не прошу дать мне ссылку на готовый движок. Программирование это мое хобби и я разобраться хочу, а не скопипастить готовое. Просто нужен совет как победить матрешку в данном случае. Я понимаю, что решение до жути простое, но увы не решил пока. Иначе бы не спрашивал.
Сообщение отредактировал x64 - Воскресенье, 07 Января 2018, 16:31
вижу, только хотел спросить "как?" но Вы уже ответили! Спасибо
и все же не годится!!! не работает на андроиде в хроме! а если не работает хоть где-то = принципиально не подходит (не смотря на остальные +++ ) ;(
проблема не решена! ищу решение другое
+ поправка (работает то оно на андроиде в хром) но вот попросил только что протестировать человека и тот не нашел за что потянуть чтобы изменить размер. А оказалось надо за правый нижний угол было тянуть.
трудно догадаться (сам то же не догадался) отображение другое чем на компьютере и хоть мозг вынеси, а ведь 2 человека со старта не нашли
итог - да крутое решение не спорю!!! но не то! нужно более простое и интуитивно понятное
Сообщение отредактировал x64 - Воскресенье, 07 Января 2018, 17:11
А Вы представляете вообще, что кто-то будет растягивать элемент на мобилке? Маловероятно. Если всё ещё не передумали, то посмотрите jQuery UI resizable, если оно, то можно нагуглить его легковесные аналоги.
Vostrugin, не могу не сказать Вам спасибо за совет, но видимо мне не дает покоя вопрос о том как победить фреймы. Простите за консервативность, но знаю о том, что даже сейчас многие используют фрейм систему. И все чудесно работает. А с дивами возможно и оно конечно, но все же не уверен в них.
Поймите правильно. Не хочу сказать, что ваш способ плох. Вполне может быть даже лучше в разы и я просто это не понимаю. Но проблему то текущую я не решаю таким образом. А это знания, которые хочется приобрести и понять как правильно организовать работу с фреймами.
На мобилке возможно никто не будет ничего ресайзить, но все же такая возможность должна быть и должно быть это просто и понятно. Без подгрузки тяжелой библиотеки JQuery
x64, пока Вы не решаете проблему, а создаёте себе новую. Уточните текущую проблему, при логауте обновляется основной айфрейм, а остальные остаются с неактуальной информацией, правильно понимаю? Перезагрузка остальных айфреймов поможет?
при логауте обновляется основной айфрейм, а остальные остаются с неактуальной информацией, правильно понимаю?
Да верно Вы понимаете. За одним исключением. У меня не айфреймы, а просто фреймы. И мало того что остальные остаются не обновлены, так еще и проблема "матрешки" в актуальном фрейме существует. Не знаю как вернуться допустим на index.php
Возможно нужен скрипт, возможно нужно иначе прописать рут директорию или что-то еще?
Например если я "убил" сессию пользователя, то фрейм чата и фрейм онлайн так же должны отреагировать. А этого пока не происходит. Да и собственно как я уже понял, уничтожение сессии в одном из фреймов не совсем верное решение.
+ спрошу еще (может и не по теме вопроса, а может и по теме) - вот в тех браузерках о которых я упоминал есть такое допустим игрок залогинился, и в адресной строке нечто такое http;//sitename.php?pl=0.3932342901903001 куча цифр... которые сохраняются на протяжении всей сессии. Хотел бы понять что это и возможно тут разгадка?
Сообщение отредактировал x64 - Воскресенье, 07 Января 2018, 18:37
если ссылка на выход в фрейме, то можно сделать вызов url в родительском окне (<a href="/logout.php" target="_top">logout</a>) в нем вызвать скрипт разлогирования и после разлогирования уже редирект на главную страницу Разработка и продвижение сайтов. Дизайн
Сообщение отредактировал lvovand - Воскресенье, 07 Января 2018, 19:10
lvovand, а может еще один момент подскажете? вот сейчас логаут заработал корректно по ссылке но это полдела. Допустим истекла сессия а пользователь находится внутри игры. По логике его надо выкинуть из игры (т.к. сессия не активна) я сделал так
хэх ну я только за!!! тем более, что по сути до сего проекта я делал лишь простые вещи (этот проект более сложный для меня) и собственно я с радостью бы принял на веру все новое - но вот сложность в том, что чувство неполноценности не покидает (выше уже объяснял почему) - хочу добиться того что есть скажем на сегодняшний день в других играх (пусть даже с костылями) а затем уже оценив всю глубь трагедии скорее всего и сам посмотрю в сторону чего-то нового + опять же новое не всегда лучше мне по сей день быстрее и удобнее сверстать таблицей нужную страницу чем извращаться с дивом (хотя местами див рулит и никакая таблица там не спасет- ну это так для примера)
на счет джавы испытываю откровенные сложности и написать что-то на джаве для меня проблема (мало использовал опыта почти нет)
отсюда все что с джавой связано обхожу пока ;(((
а с теми же дивами или еще чем то там без джавы не обойтись ну никак
вот пока и ломаю голову
а что до логики самой игры - то здесь проблем не испытываю )) продумать придумать как что на что воздействует и действует получается и в рамках 1й страницы работает (но там нет чата и нет списка онлайн) - вот и думаю как это прикрутить чтобы было аля Карнаж или БК или чет в этом духе
Я несколько раз пытался начать писать ответ, но у меня перед глазами вставала картина сайта, разделенного фреймами на 4 части, руки опускались и я закрывал этот тред Автору рекомендую срочно перейти на более актуальные технологии и прекратить издеваться над людьми
учитывая то, что уже несколько человек наругали фреймы и советуют использовать более современное попробую еще раз освежить задачу, исходя из того, что имеется
Итак. Есть тело игры с единой точкой входа. Все фильтры запросов (роутеры если не ошибаюсь) прописаны в main.php - поступил запрос А = вызывается метод А и там уже метод делает то, что требуется. Вызывается класс, по его чертежу формируется некий объект (персонаж, предмет, локация или что угодно еще), и это возвращается в главную страницу в виде уже готового кода для отображения. MVC короче говоря использую.
Повторюсь. Все прекрасно и без лишних вопросов работает в масштабах 1й страницы main.php и есть желание продолжать наполнение проекта именно игровой логикой. Но!
Возникла потребность оформить общий вид игры в духе старинных браузерок аля Карнаж, БК где в верхней части экрана тело игры, а в нижней чат + системные кнопки с часами. Надеюсь понятно о чем идет речь?
И вот здесь в этой стадии и возникла сложность. Изучив старинные браузерки я понял, что там использовались фреймы. А вот аналогов более современных я не нашел. Я не сильный фанат всех игр и не шпилю во все подряд. Как раз скорее я фан именно старинных игрушек, отсюда и ностальгия сделать что-то в том духе.
Прекрасно понимаю, что фреймы = устарели и пишут об этом не только здесь, но и в целом в сети интернет. Верю и понимаю. Готов выкинуть их к чертям. Но что использовать? Чтобы визуально было 1 к 1 как с фреймами
Вчера Vostrugin предложил мне вариант с дивами. ДА! Они резайз имеют. Но видимо требуют целый набор напильников чтобы запилить их до нужной кондиции. Я имел неосторожность делать один проект с дивами и как выяснилось спустя некоторое время часть браузеров не поддерживала кое-какие функции или css. Было очень неприятно потом перед людьми. Пришлось перепиливать таблицами тот проект. После чего 100% кроссбраузерность. Это из опыта. Отсюда моя нелюбовь к дивам особенно там, где касается разметки. Хоть и есть десятки фишек и по нескольку способов как сделать разметку дивами, но всякий раз когда берусь что-то размечать дивами - понимаю, ну его. Сейчас работает, а через минуту выяснится что чего-то где-то съехало и не так отображается. Вот и вчера в банальном простейшем примере с резайзом дивов я сделал тест и попросил человека протестировать. И он, и я со старта не нашли на мобилке где резайзиться див. Потом я попробовал все таки нижний правый угол и заработало. Но Господа! Это жутко неправильно! Такая технология не подходит. Возможно я не допилил (знаний не хватило) не спорю! Но в примитивном виде это не то.
Опять же в див можно загрузить отдельную страницу? (чтобы она жила своей жизнью, например чат)
Скорее всего чат придется делать через аякс или джаваскрипт в этом случае и тогда какой смысл разметки? у меня и так получается все уже есть в одной странице.
Одним словом просто не могу понять. С радостью бы пообщался с опытными разработчиками в реале. Попить пива и посидеть час-два за компом с опытным мастером = думаю пришло бы понимание. Но увы таковых знакомых нет. Потому вопрос задаю на форуме. Уж извините, старался изложить суть проблемы, чтобы ясно было в чем она.
Вот и проблема - как и чем прикрутить чат? Чтобы при необходимости пользователь мог подвинуть окно чата или тела игры. Чтобы нижняя панелька (footer.php) с ее часиками висела жестко фиксированно в нижней части экрана и резайзы на нее не влияли. Чтобы была читабельность даже на исторических компьютерах с их историческими браузерами (не знаю как кому, а мне важен любой посетитель).
Вот собственно таковы задачи. И пока ломаю мозг - рою (помимо этого форума) инет и другие топики с похожими темами, но решения нет. Возможно оно и есть. Но я его еще не нашел.
За ваши советы - респект вам. Я действительно слушаю и прислушиваюсь. Да! Фреймы и правда гемор. Вижу. Но чем заменить? Так чтобы надежно и без танцев с бубнами.
Заранее благодарю. Вопрос пока не решен. Тема актуальна.
Сообщение отредактировал x64 - Понедельник, 08 Января 2018, 11:21
Для того, чтобы реализовать описанное, Вам всё таки придётся хотя бы поверхностно изучить js. Вы опираетесь на какой-то печальный опыт работы с div'ами. Возможно Вы столкнулись с отсутствием поддержки некоторых css свойств браузерами, используйте сервис caniuse, чтобы проверить их поддержку. Тот 0.1% пользователей с очень старыми браузерами Вам точно не нужен, на поддержку Вы потратите больше ресурсов, чем получите отдачи. Вспомните любую соц. сеть, там тоже есть чат, но разве они используют фреймы? Чат можно реализовать через сокеты, к примеру. Перезагрузку всей страницы можно избежать реализовав js навигацию по сайту, с подгрузкой новых страниц через ajax. Посмотрите тот же ВКонтакте, там левая часть сайта тоже не перезагружается при переходах по разделам.
Добавлено (08 января 2018, 11:12) --------------------------------------------- Кстати, если Вам не безразличны пользователи, то уходите от таблиц в таком широком применение. Есть ситуации, когда они нужны, но верстать всё на них - плохо. Сейчас около половины пользователей сидят с мобилок, а адаптировать таблицы под моб. телефоны очень не удобно. Иначе Вы можете использовать таблицы, но тогда придётся держать по две версии каждой страницы - для обычных юзеров и мобильных.
вот собственно то, что желаю получить (вариант для просмотра на хд мониторе горизонтальный) стрелочек для резайза специально показал так много чтобы было ясна задача - в любой точке можно тыцнуть и подвинуть вверх или вниз, вправо или влево
Добавлено (08 января 2018, 11:31) --------------------------------------------- Vostrugin, на счет js согласен, видимо без него никак - но тут возникает вопросище Вот сейчас все работает без скрипта (без аякса) обработка событий происходит в конкретном файле. А если подключить аякс? Это же все придется перепиливать? Скорее всего что да и какие будут результаты? Так можно застрять и утратить мотивацию делать что-то дальше... хотя с мотивацией все в порядке, это очень принципиальный проект и я хочу его довести до того состояния, как было задумано
Из социалок пользовался Фейсбуком (да там то же есть чат) но это патологически не то, что хочу сделать я. Понимаю. Можно взять тот же див и в него поместить чат + задать z-index (разместив его поверх остального) зафиксировать и тп. Можно да. Не спорю. Но внешний вид не тот.
Мой проект рассчитан на определенную категорию игроков, и есть даже люди которые уже пытаются тестировать мои первые шаги. Их устроит дух тех старинных браузерок. Это важно!!! Пусть технология будет современной (это не принципиально) но она (технология) должна давать внешний вид тот же что изображен на схеме.
Ну возможно я много запланировал, но тем не менее думаю это решабельно все таки
Сообщение отредактировал x64 - Понедельник, 08 Января 2018, 11:41
Вот решение, развивайте его дальше пока не получите нужный результат. С помощью js'а можно эмулировать поведение любого элемента, было бы желание. В решение не используется jQuery, можно использовать её и сократить объём кода.
Цитатаx64 ()
Вот сейчас все работает без скрипта (без аякса) обработка событий происходит в конкретном файле. А если подключить аякс? Это же все придется перепиливать? Скорее всего что да и какие будут результаты? Так можно застрять и утратить мотивацию делать что-то дальше... хотя с мотивацией все в порядке, это очень принципиальный проект и я хочу его довести до того состояния, как было задумано
Конкретной реализации я не подскажу, у мне другой стек технологий. Идея в том, что вы отправляете запрос на указанный вами адрес, сервер получает запрос, обрабатывает и возвращает json (можно и в другом виде, но лучше json), после получения данных Вы обрабатываете их на стороне js и выводите если нужно.
Vostrugin, исправил ответ т.к. исправил код. Простое копирование скрипта, css и тела документа ничего не дало. Оказалось нужно подключать сторонние библиотеки. Нашел это посмотрев фрейм с примером. У меня они изначально были не подключены. О как! И поди угадай же что их надо подключать и какие именно.. ;(
Туго дается пока. Но все же спасибо. + отдельное спасибо за мысль о том как закрепить див футера. Я как балбес это пытался через топ сделать, а можно было через боттом ))) хоть что-то полезное почерпнул для себя! ;)) спасибо
Сообщение отредактировал x64 - Понедельник, 08 Января 2018, 14:51