Daniel
|
|
« -: Ноември 11, 2016, 12:20:30 » |
|
В играта е заложено, че минималното време за атака между играчите е 10 минутки. Джиткам си аз цял ден и по едно време по навик ли, по неволя натиснах F5 и гледам мечове към мен. Едно, че има мечове, друго че времето ми за реагиране е 3 минутки. Нападнаха ме от военен пост, но най-интересното е, че играта си прави през определено време опреснение с пост заявка xjxfun=refreshUI и мечове няма. Значи играта си рефрешва нонстоп и няма нужда да има моя намеса, за да ми покаже мечовете обикновено, но в някой случаи кода не се зарежда от ajax. Спасих си армията, но въпроса ми е, защо когато играта си прави рефреш мечовете не се появяват? От кеширането на браузъра ли се получава този проблем? Идва момент, в който атака пътуваща към теб става инкогнито и ти не я виждаш, докато не ти се проведе битката. Това означава, че има проблем с визуализирането на мечовете от браузърите. Определено компа или браузъра, или флаша не ми бяха забили.
|
|
« Последна редакция: Ноември 11, 2016, 13:57:27 от Daniel »
|
Активен
|
Човек трябва да бъде достатъчно голям, за да признае грешките си, достатъчно умен, за да спечели от тях, и достатъчно силен, за да ги поправи. (Джон Максуел)
|
|
|
Vania
Community Manager
Karma: +251/-431
Неактивен
Публикации: 4239
|
|
« Отговор #1 -: Ноември 14, 2016, 15:07:41 » |
|
Необходимо е да се рефрешва ръчно. Играта не рефрешва автоматично. Прочетох на няколко места, че сте ни пратили имейл, който не сме "отразили". Бихте ли ми писали лично за коя дата става въпрос и от коя поща е пратено писмото, за да проверим. Отговаря се на всички писма, постъпили на пощата в рамките на деня, в който са постъпили, при голяма натовареност - на следващия ден, а в най-лошия случай, какъвто бе последният проблем с армиите и последвалия бекъп - може да има и още ден забавяне, ако въпросът не е от голяма важност.
|
|
|
Активен
|
| Vania Bulgarian Community Manager |
|
|
|
Daniel
|
|
« Отговор #2 -: Ноември 14, 2016, 16:50:12 » |
|
Необходимо е да се рефрешва ръчно. Играта не рефрешва автоматично. Прочетох на няколко места, че сте ни пратили имейл, който не сме "отразили". Бихте ли ми писали лично за коя дата става въпрос и от коя поща е пратено писмото, за да проверим. Отговаря се на всички писма, постъпили на пощата в рамките на деня, в който са постъпили, при голяма натовареност - на следващия ден, а в най-лошия случай, какъвто бе последният проблем с армиите и последвалия бекъп - може да има и още ден забавяне, ако въпросът не е от голяма важност.
В играта е заложено при промяна (провеждане на битка върнала се армия) да се рефрешва автоматично. Подава си се пост заявка за рефреш. Заложени са така наречените event listener функции, които следят за някаква промяна. Дали ще е натиснат бутон, промяна на някаква стойност или поле, няма значение, чрез ajax технология се подава заявка към сървърният език, който връща резултат и примерно JS показва броя нови съобщения без реално да съм направил някакъв рефреш с F5. Ако не знаете какво е аjax може да се запознаете тук ( http://www.w3schools.com/xml/ajax_intro.asp). Когато някой изпрати атака към играч, мечовете изкачат самички, не е нужно да натискаме F5. Проблема идва от това, че не всеки път мечовете излизат самички и от това следват редица интересни последици. Стелт атаки, поради не визуализирана информация. Нямам възможността да тествам дали при появяването на мечовете се прави пост заявка за рефреш от играта, но ако не се прави то това е голяма глупост. Ако някой ме нападне е хубаво играта да рефрешва и при мен за да се появяват мечовете, но няма как да проверя дали се праща заявка, освен ако някой не ми прати атака само за теста. Ако има подадена пост заявка за рефреш при визуализиране на мечовете освен при нападащият и при защитника (не само да се очаква от ajax отговор) няма да има такъв проблем. Не съм тествал дали има рефреш, но ако има при подаването на мечове такъв рефреш от играта значи трябва да се търси друго решение. Например в момента на атаката браузъра е кечнал страницата без мечовете, то те НЕ се визуализират, освен ако директно не сме им задали рефреш с F5. По принцип е сложен таймер отброяващ времето до провеждане на битката, който по неволя би трябвало да се справи с този проблем, но явно в някой случаи браузърите не визуализират информацията. Ето една тема в която се разисква такъв проблем: ( http://stackoverflow.com/questions/367786/prevent-browser-caching-of-jquery-ajax-call-result) Проблема не е масов, просто защото се разчита на динамиката на потребителя. Тоест, когато потребителя извършва някакво действие и то е свързано с рефреш да се прави автоматичен такъв. Но както си бях оставил лаптопа за 10 минутки да си текът атаките и хоп по навик натиснах F5 и атаката си тече към мен и то с оставащи 3 минутки до битката. Не може да получаваш съобщения от различните дейности или играчи в ИО и на следващият момент да ти рефрешне играта с червено писънце (бяхте набит).
|
|
|
Активен
|
Човек трябва да бъде достатъчно голям, за да признае грешките си, достатъчно умен, за да спечели от тях, и достатъчно силен, за да ги поправи. (Джон Максуел)
|
|
|
Vania
Community Manager
Karma: +251/-431
Неактивен
Публикации: 4239
|
|
« Отговор #3 -: Ноември 14, 2016, 18:04:50 » |
|
В играта е заложено при промяна (провеждане на битка върнала се армия) да се рефрешва автоматично. Подава си се пост заявка за рефреш. Заложени са така наречените event listener функции, които следят за някаква промяна. Дали ще е натиснат бутон, промяна на някаква стойност или поле, няма значение, чрез ajax технология се подава заявка към сървърният език, който връща резултат и примерно JS показва броя нови съобщения без реално да съм направил някакъв рефреш с F5. Ако не знаете какво е аjax може да се запознаете тук ( http://www.w3schools.com/xml/ajax_intro.asp). Когато някой изпрати атака към играч, мечовете изкачат самички, не е нужно да натискаме F5. Проблема идва от това, че не всеки път мечовете излизат самички и от това следват редица интересни последици. Стелт атаки, поради не визуализирана информация. Нямам възможността да тествам дали при появяването на мечовете се прави пост заявка за рефреш от играта, но ако не се прави то това е голяма глупост. Ако някой ме нападне е хубаво играта да рефрешва и при мен за да се появяват мечовете, но няма как да проверя дали се праща заявка, освен ако някой не ми прати атака само за теста. Ако има подадена пост заявка за рефреш при визуализиране на мечовете освен при нападащият и при защитника (не само да се очаква от ajax отговор) няма да има такъв проблем. Не съм тествал дали има рефреш, но ако има при подаването на мечове такъв рефреш от играта значи трябва да се търси друго решение. Например в момента на атаката браузъра е кечнал страницата без мечовете, то те НЕ се визуализират, освен ако директно не сме им задали рефреш с F5. По принцип е сложен таймер отброяващ времето до провеждане на битката, който по неволя би трябвало да се справи с този проблем, но явно в някой случаи браузърите не визуализират информацията. Ето една тема в която се разисква такъв проблем: ( http://stackoverflow.com/questions/367786/prevent-browser-caching-of-jquery-ajax-call-result) Проблема не е масов, просто защото се разчита на динамиката на потребителя. Тоест, когато потребителя извършва някакво действие и то е свързано с рефреш да се прави автоматичен такъв. Но както си бях оставил лаптопа за 10 минутки да си текът атаките и хоп по навик натиснах F5 и атаката си тече към мен и то с оставащи 3 минутки до битката. Не може да получаваш съобщения от различните дейности или играчи в ИО и на следващият момент да ти рефрешне играта с червено писънце (бяхте набит). Аз не съм програмист и не е необходимо да съм запозната с цялата тази информация. Благодаря Ви все пак за професионалното обяснение. Разбирам, че Вие знаете много неща за програмирането и говорите със специфична терминология от тази сфера, че можете да пишете ботове, чекъри, скриптове, да бъркате в кода на играта и т.н., но тук не е подходящо място за парадиране с тези така полезни умения. Аз пък от своя страна с думи прости Ви казах, че играта не се рефрешва автоматично по време на атака, и Вие трябва да рефрешвате, за да следите времето до удара. Това съм обяснявала доста пъти на играчи, които по точно същия начин са пропуснали да видят иконата за атака. Целта е именно да следите, да следите постоянно акаунта си за евентуални идващи атаки.
|
|
|
Активен
|
| Vania Bulgarian Community Manager |
|
|
|
mahimus
|
|
« Отговор #4 -: Ноември 14, 2016, 22:54:07 » |
|
|
|
« Последна редакция: Ноември 14, 2016, 23:05:37 от mahimus »
|
Активен
|
|
|
|
Daniel
|
|
« Отговор #5 -: Ноември 15, 2016, 00:49:27 » |
|
Аз не съм програмист и не е необходимо да съм запозната с цялата тази информация. Благодаря Ви все пак за професионалното обяснение. Разбирам, че Вие знаете много неща за програмирането и говорите със специфична терминология от тази сфера, че можете да пишете ботове, чекъри, скриптове, да бъркате в кода на играта и т.н., но тук не е подходящо място за парадиране с тези така полезни умения. Аз пък от своя страна с думи прости Ви казах, че играта не се рефрешва автоматично по време на атака, и Вие трябва да рефрешвате, за да следите времето до удара. Това съм обяснявала доста пъти на играчи, които по точно същия начин са пропуснали да видят иконата за атака. Целта е именно да следите, да следите постоянно акаунта си за евентуални идващи атаки.
Аз не парадирам с нищо, а казвам, че го мога. За да създадеш пък бот са нужни минимални познания, за cURL и доста опити за да стане. Да ровя се в изходният код на играта, защото ми е любопитно как е създадена, но някъде да сте видяли да поствам код по темата? Отностно мечовете, обяснете ми защо не се появяват автоматично? Да, да знам трябва да извършвам някаква дейност и да рефрешвам, но тогава идва най-простият за мен въпрос, защо когато си оставя машината и получавам съобщения те биват отчитани от играта и се рефрешват а мечовете не излизат (понякога)? Значи, идеята е точно такава, пращат ми атака и веднага трябва да излезнат мечовете, но понякога заради кечнатото инфо от браузъра не излизат. Има варянти това да се избегне, най-просто ще стане с вече готовият пост рефреш метод, който ползвате при провеждане на битка през определен период от време. Ако се въведе пък този тип цялостен авто рефреш, ще доведе до проблеми с отчитането на активността на потребителите, като лесно може да се добави в кода брояч и да не отчита в общата статистика, че този рефреш е направен от играч. Така ще се избегне проблема с постоянното (на линия). Но това е само един начин за разрешаване на проблема. Просто нямам време да тествам за да дам повече обяснения по темата. Да ако си рефрешваме от време на време няма да се получава този проблем, но то самата игра ни подтиква да не правим такива рефреши. Например повечето неща се зареждат в изкачащи прозорчета, мисии и прочие, от които не се знае, кои бутони водят до рефреш в играта. За теста пуснах глобалната карта през live http headers и никъде нямаше рефреш на заден план на играта с пост заявка xjxfun=refreshUI към xajax_loader. Тоест дори да се ровя по глобалната карта е напълно възможно отново да не видя мечовете. За сметка на това, при провеждане на битка или връщане на армията, веднага се прави такава заявка от играта (което е супер). Както казах нямам възможността да тествам в момента дали при показване на мечовете има заявка xjxfun=refreshUI, но ако я имаше нямаше да го има този проблем (а ако я има и този проблем се превръща в доста по-сериозен за разрешаване). По спомен просто ми изкачаха мечовете без да имам такъв рефреш, което е мноого, много лошо. Вие повтаряте да рефрешваме и да следим акаунтите си, но то как да го правим, когато самата игра понякога ни отнася и докато си се ровим по картата или някъде из трибуната се оказва, че получаваме рефреш за проведена битка и червено писънце, че сме изяли боя. Та аз имам навика от време на време да натискам F5, така и се спасих, но доста хора ще изгорят, само защото не е сложено едно условие: if ($underAttack == true) { // Функция, която праща пост заявка xjxfun=refreshUI към xajax_loader за да извърши рефреш на страницата. doRefresh(); } Така каквото браузъра си е кечнал, се обновява изцяло и мечовете се показват. Ще се сложи една променлива вътре по дефаут да е false и ще се избегне и цикличният рефреш: if ($underAttack == true) { // Функция, която праща пост заявка xjxfun=refreshUI към xajax_loader за да извърши рефреш на страницата. if ($isShowedSwords == false) { doRefresh(); $isShowedSwords = true; } }
Е тук може малко да се поспори във вторият пример дали ще се реши цикличният проблем, нооо да кажем, че ще стане с малко проба грешка тестове. Та както и да е само илюстрирам набързо без да тествам код. Та има решения на проблема и не са нещо сложно за екипа от програмисти да го опише като логика. Все пак вероятно играта си има собствена работна рамка и всякакви отделни обектно ориентирани кодове под формата на класове. Вече имате готов код просто трябва да се опише правилната логика за рефреш при отправена атака и ще се избегне доста мрънкане по темата, а и ще е по-добре за геймплея.
|
|
« Последна редакция: Ноември 15, 2016, 00:53:24 от Daniel »
|
Активен
|
Човек трябва да бъде достатъчно голям, за да признае грешките си, достатъчно умен, за да спечели от тях, и достатъчно силен, за да ги поправи. (Джон Максуел)
|
|
|
|
|
|