2004 ?WWII Online? Development Roadmap

Discussion in 'WWII Online' started by --u-p-, May 22, 2004.

  1. Wildhoney

    Wildhoney Well-Known Member

    Joined:
    Jan 11, 2004
    Messages:
    119
    Ну дык, вот только сервер понятия не имеет, что для тебя в данный момент наиболее приоритетно - пехотинец за стеной AB или вулчащий эту же AB Blen.

    Но на клиентской стороне можно строить нехитрые догадки - если ты смотришь на Blen, наверно, его координаты интересуют тебя больше, чем координаты пехотинца. Если хотя бы это отдавать серверу, можно намутить довольно эффективную систему апдейтов, но на практике это реализовать офигенно сложно. Но я тешу себя надеждой, что в CRS работают не "специалисты широкого профиля" а-ля oleg, и они сделают новые апдейты нормально, а не как обычно :)
     
  2. --oleg

    --oleg Well-Known Member

    Joined:
    Dec 20, 2001
    Messages:
    4,414
    Location:
    Russia
    Продолжим.

    Вынужден тебя разочаровать, я играл в WW2OL во время работоспособного триала.

    Что-то я не заметил, где ты это доказал. То, что ты считаешь этот алгоритм неработоспособным, не делает его таковым. Просто надо смотреть немного шире и не замыкаться на волшебной формуле "больше дистанция = меньшая частота обновления". Я, вроде, нигде не говорил, что это панацея, это лишь основной принцип.

    Ну, если тебе от этого станет легче - ради бога.

    Ок, давай подробно.
    1) Не знаю, с какого потолка ты взял эти 2сек, но пусть будет так. 2 сек между обновлением координат отнюдь не обозначают, что новая инфа придет клиенту через 2сек после начала движения врага (по условию изначально он не двигается). Обновление может произойти и через 0.1 сек и через 2сек, но скорее всего ближе к 1сек. При этом твой противник не знает ни когда это произойдет, ни как часто у тебя эта инфа обновляется, т.е. подгадать он не сможет - как карты лягут, что называется.
    2) Не надо рассказывать сказки, как за пару секунд можно выскочить, прицелиться и с 800м уложить лежащего в кустах пехотинца с первого выстрела.
    3) Если у тебя за спиной еще толпа народу, наверняка кто-то увидет противника куда раньше, даже если они все на диалапе.
    Но ты, как я понимаю, предпочитаешь его (вражеского пехотинца) вообще не увидеть, да? :) Лимит в 64 ведь еще не отменили, а у тебя своих толпы рядом крутятся, вот ведь облом какой. :)

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

    Теперь моя очередь. Ты все еще считаешь вариант с определением видимости более правильным? ;)

    1) Собственно, я уже об этом вскользь упоминал. Представь, что ты сидишь на AB около пехотного выхода, например. По другую сторону стены движется вражеский танк; ты его не видишь и в ближайшие 1-2 минуты увидеть не сможешь (по условию). Твой клиент это определил (не важно как), так что его координаты тебе не приходят, правильно?
    Теперь вопрос: как ты предлагаешь позиционировать звук его работающего мотора? Координат у тебя нет и не будет, пока танк не покажется из-за стены.
    Предложишь слышимость тоже определять, учитывая какими препятствиями звук гасится, а какими отражается и т.д? :)

    2) Еще интереснее.
    Как ты предполагаешь определять виден юнит или нет, если однажды решив, что он не виден и не будет виден еще N секунд, больше его координаты до истечения этого времени не получишь? :) Учти, что он может и поменять направление/скорость.

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

    Wildhoney Well-Known Member

    Joined:
    Jan 11, 2004
    Messages:
    119
    Ну, не то чтобы неработоспособным. Работать будет - вопрос, как. Тупой 64 limit тоже работает ведь :)

    Предположим, что координаты одного юнита занимают, ммм, 6 байт? Плюс вектор движения, столько же. Плюс какой-никакой ID надо передать - еще два байта, имеем 14. Ну и два байта на заголовок. 16. Компрессию пока не рассматриваем :) По модему можно прокачать, хм, ну, 3000 байт в секунду. Значит, мы можем получить 187.5 обновлений координат в секунду. Для юнитов, которые находятся близко к нам (а мы подразумеваем в этом примере, что близко к нам находятся много юнитов), мы должны получить обновлений побольше, ну, хотя бы штуки 4 в секунду - т.е. ~40 юнитов мы можем обновлять "с приличной скоростью", а все, что свыше этого - раз в секунду. Исходя из этого, можно предположить, что, если "рядом" с нами находится 64 юнита, то обновление координат "далеких" юнитов будет происходить где-то раз в полторы-две секунды (а если за спиной spawnable, то еще реже, т.к. при появлении нового юнита инфы нужно передать побольше).

    Не спорю. Вопрос везения - это да. Но - играющим на толстом канале везти будет чаще.

    Если ты перед этим посмотрел, где он примерно лежит, и он не двигается, то не вижу какой-либо принципиальной сложности.

    Искусственный лимит в 64 уравнивает шансы толстоканальщиков и диалапщиков. Я же предпочитаю видеть все и по мере возможности вовремя :)

    Смотря с какой точки зрения. С точки зрения "честности" - несомненно. Я не говорил, что его реализовать просто - его реализовать офигенно сложно даже при очень больших допущениях... но мне не кажется, что это непреодолимая задача. Очевидно, что для того, чтобы клиент не помер в расчетах, придется применять и эвристики типа твоей; но мне кажется, что начинать в данной задаче нужно с того, чтобы отбросить как можно большее число заведомо неинтересных юнитов (каким способом - второй вопрос). После этого можно уже оптимизировать на уровне "ближе - чаще".

    Не, со звуками проще. Мне эта проблема тоже приходила в голову :) На самом деле существенно проще, т.к. фоновых звуков типа мотора больше трех-четырех все равно неинтересно (звуки выстрелов - отдельная категория), координаты их знать точно совершенно ненужно, обновлять даже раз в 3-4-5 секунд - и то уже неплохо. Это вполне реализуемо.

    Брать худший случай, очевидно. Т.е. примерно так, что если юнит будет двигаться с максимальной скоростью в направлении ближайшей границы отсечения, то он достигнет ее не ранее, чем. Это довольно просто считается, если не брать в расчет мелкие обьекты.

    Поверь, я искренне надеюсь на то, что будущее - за гигабитной выделенкой :) (ваш покорный слуга сидит, между прочим, тоже далеко не на диалапе, но это не повод класть с прибором на проблемы остальных)

    Дык я разве с этим спорю?
     
  4. --oleg

    --oleg Well-Known Member

    Joined:
    Dec 20, 2001
    Messages:
    4,414
    Location:
    Russia
    Это наиболее оптимальный и универсальный способ. Для WW2OL, в частности, можно учитывать ряд дополнительных факторов (из-за разнообразия хар-к юнитов и потенциально большого кол-ва их в одном месте). Но даже без их учета он гораздо лучше жесткого лимита.

    Вообще-то говоря, игроки с толстым каналом действительно будут иметь определенные премущества, но только немного не такие ;) И них просто все будет двигаться более гладко, что, естественно, упрощает стрельбу, в частности.

    Это невозможно :D Пока все не заимеют те самые 2Мбит :) Но если тебя так волнует чтобы все имели равные шансы, можно просто не учитывать пропускную способность канала, на сам алгоритм оптимизации это никак не влияет.

    Позволю себе с тобой не согласиться. Я, конечно, стрелок никудышный, но в оффлайновом тире с 500м практически не мог попасть в лежащую фигуру из положения лежа и достаточно долго прицеливаясь.
    Да, кстати, если ты его видишь, то зачем из кустов-то вылезать?

    Да, и ты очень хорошо расписал все трудности этого способа еще в самом первом сообщении :) Только вывод из этого ты сделал несколько странный :) Поверь мне, как программисту, никто не будет заморачиваться такими расчетами, чтобы в результате получить результат +/- километр.

    Со звуком вполне приемлимо, а во втором абзаце ты получишь те самые +/- км.
    На самом деле, обе эти проблемы решаются проще (в пределах твоего способа): координаты передаются всегда и для всех (в определенном радиусе, конечно), а остальные данные (скорость, направление, поворот башни и пр.) только для тех, кто в зоне видимости. Это даст и приемлимую точность и существенную экономию трафика ...пока ты не выйдешь в чистое поле ;) Вот тут-то твой алгоритм сядет в лужу по самую шею.

    Таки положат и, я подозреваю, довольно скоро. Для примера, "птичкам" было достаточно соединения на 9600 (минимальное требование); в АХ можно играть на 28800, если не лезть в большие свалки; ww2ol еще больше (точно не знаю).
    Тебе не удивляет, что большинство современных игр требует P4 + GForce4 + 512Мб для нормальной работы? Разработчикам гораздо проще поднять системные требования, чем оптимизировать продукт под устаревшее оборудование.

    Мне показалось, что да :)
     
  5. Bobby

    Bobby Well-Known Member

    Joined:
    Oct 19, 2001
    Messages:
    9,755
    Location:
    Almaty, Kazakhstan
    На сколько я понимаю, в настоящее время если сервер не посылает координаты юнита, то он пропадает. На первое время хватило бы реализации в которой для неизменяющего своего положения юнита не посылались бы его координаты, а фронтэнд бы продолжал его рисовать на старом месте. Используя этот прием можно было бы реализовать и кладбище разбитой техники, что добавило бы в игру колорит. Второй момент, я хотел бы, что бы видимость была бы взаимной. Похоже это есть, но слегка кривовато. Невидимый самолет мою зенитку еще не сбивал, но в упомянутом мной случае, совершенно очевидно, что видел он меня на гараздо большей дистанции чем я его. Поэтому он успел прицелиться, а у меня он проявился одновременно с попаданиями по мне.
    В любом случае только сервер может решить, чьи координаты передавать, а чьи нет.
     
  6. --u-p-

    --u-p- Well-Known Member

    Joined:
    Feb 11, 2000
    Messages:
    7,849
    Location:
    Moscow
    Я не очень представляю как на штуке летать. Постоянная ситуация - нахожу танк, пикирую - нет его, смотрю назад - вижу другой танк рядом с тем, что был, пикирую - никого, смотрю назад - вижу еще один другой танк, пикирую - проявляется один из танков, но естественно не тот на который я пикирую....
    Вот с этим бред полный, если за союзников еще есть время вычислить где танк стоит, то за немцев есть 1-2 захода, потом сбивают...
    За союзников летал на хурре, вижу 3 танка вокруг депота, разворот, атака - пусто.... никого ну и дальше как обычно. Пытался удерживать танк в поле зрения, чтобы не пропадал, фигово выходит...
     
  7. hamstr

    hamstr Well-Known Member

    Joined:
    Nov 12, 2001
    Messages:
    2,919
    Location:
    Moscow, Russia
    Странно, у меня такого не было ни разу.
     
  8. VadVB

    VadVB Well-Known Member

    Joined:
    Sep 24, 2003
    Messages:
    137
    Location:
    Russia, Ulan-Ude
    аналогично на бомбере несколько раз заходил на дестроир он исчезал и появлялся позади меня и как всегда меня убивал.
     
  9. Vitali

    Vitali Well-Known Member

    Joined:
    Sep 8, 2003
    Messages:
    350
    Location:
    Germany
    Во,тоже хотел написать,что прям как у Вада тогда было
     
  10. Bobby

    Bobby Well-Known Member

    Joined:
    Oct 19, 2001
    Messages:
    9,755
    Location:
    Almaty, Kazakhstan
    То же вспомнил. Подлетаю к городу, вижу H39. Бросаю на него 250, так как отдача от нее очень мощная с достаточно большой высоты делаю вывод и он проподает из поля видимости, при горке смотрю назад, танка нет. При посадке за него даже демедж не дали. Скорее всего он просто пропал к тому моменту как бомба долетела до земли. Вообще с земли говорили о множестве танков, но я видел только этот 1 да и он пропал.
     
  11. hamstr

    hamstr Well-Known Member

    Joined:
    Nov 12, 2001
    Messages:
    2,919
    Location:
    Moscow, Russia
    Танк мог диспаунится до того как бомба на него упала. У меня такое несколько раз было.
    Диспаунится при звуке пикирующего на тебя бомбардировщика, это весьма действенная тактика, так как число бомб конечно :)
     
  12. Vitali

    Vitali Well-Known Member

    Joined:
    Sep 8, 2003
    Messages:
    350
    Location:
    Germany
    Но число танков тоже:)Хорошо если ты в пределе городской черты,а как быть в поле?:)Очень действенная тактика,деспаунится на зенитке:)при защите ФБ к примеру:)
     
  13. Bobby

    Bobby Well-Known Member

    Joined:
    Oct 19, 2001
    Messages:
    9,755
    Location:
    Almaty, Kazakhstan
    Вот поэтому на ФБ я пикирую с выключенным двигателем. "И жертва не услышит даже шороха моих крыльев" :). Что касается диспауна, то на дистанции 500м от АБ он безопасен, а таких больших городов не много.
     
  14. Vitali

    Vitali Well-Known Member

    Joined:
    Sep 8, 2003
    Messages:
    350
    Location:
    Germany
    Один тоже "черный орел" без мотора наверно на меня пикировал:)Получил в лоб и к моему "сожалению" из пике вышел,но не улетел дальше 10 метров:)))Можно с мотором летать и без него,но даже при установке 64 звука до меня не все звуки долетают,так что это не аргумент:)Второе,я уже как то уяснил через собственные ошибки и поражения,что Юшки-твари пикируют сверху вертикально,так что вверх мы тоже смотрим:)Ты же не сразу падать начинаешь,тебе еще надо мое местоположение найти.

    Ах да,из - за чего пишу,то и забыл упомянуть:)Мотор мотором,но бомбу то не заглушишь:)
     
  15. Bobby

    Bobby Well-Known Member

    Joined:
    Oct 19, 2001
    Messages:
    9,755
    Location:
    Almaty, Kazakhstan
    Сегодня один 520 достал, его трассы проявлялись раньше чем он проявлялся.
     
  16. Wildhoney

    Wildhoney Well-Known Member

    Joined:
    Jan 11, 2004
    Messages:
    119
    Лучше. Но можно сделать еще лучше.

    Увидел - спрятался - примерно прицелился - высунул морду из кустов, выстрелил - спрятался опять.

    Поверь мне, как программисту, я буду ими заморачиваться, если руководство скажет, что "оно должно на диалапе работать нормально".

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

    Конфигурация компа находится во власти пользователя, скорость же канала во многих случаях (даже если забыть про Россию) - не в его власти. Есть разница :) Не, broadband конечно растет и ширится... но пока еще не доросло до того уровня, когда на диалапщиков можно совершенно спокойно класть (хотя близко к этому).
     
  17. Sea

    Sea Well-Known Member

    Joined:
    Feb 9, 2001
    Messages:
    27,616
    Location:
    Ukraine, Kiev
    Че спорите, считается все просто :) 64 игрока, как минимум 3 координаты (двухбайтные как минимум) и канал 4кбайт/с. Множим, делим... 4096/(3*2*64)=~10 полных обновления в секунду. Добавляем байты ориентации (тоже 3 и тоже двухбайтные), получаем уже 5 обновлений в секунду для каждого из 64 объектов. Теперь еще стрельба, чат, служебная инфа - ууу, оно работать не должно :)
     
  18. --oleg

    --oleg Well-Known Member

    Joined:
    Dec 20, 2001
    Messages:
    4,414
    Location:
    Russia
    После того, как оно узнает, сколько на это надо времени, оно скажет что-то вроде "да ну нах этих диалапщиков". А если оно малость поумнее, то скажет "да ну нах таких программистов" ;) Желание сделать идеально, конечно, похвально, но надо же понимать, когда это оправданно, а когда нет.

    Оптимист :)

    Кажется, я сказал "Таки положат и, я подозреваю, довольно скоро", а не что можно уже сейчас забить на этих убогих :)
    В Америке и прочих развитых странах процентов 90, как минимум (по моим прикидкам) сидят на DSL или выделенке. Как ты думаешь, на кого в первую очередь ориентируются разработчики игр?
     
  19. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Не стоит забывать, что основной рынок для американского разработчика это США и западная европа.

    А если какие-то 1..5% клиентов не могут позволить себе хотя бы АДСЛ - то разработчик семь раз подумает, платить ли программистам за несколько месяцев работы оптимизации сетевого протокола или ну этих несчастных клиентов нафиг.

    Хотя сугубо мое ИМХО - у ЦРС думать вообще не принято.
    Судя по их подходам к разработке.
     
  20. Wildhoney

    Wildhoney Well-Known Member

    Joined:
    Jan 11, 2004
    Messages:
    119
    Ну, решать - оправдано или нет - это не программисты решают обычно. Кстати, когда начальство состоит само из программистов - практика показывает, что проект обречен :)

    Не, мне не кажется, что 90%. 70% более правдоподобная цифра... в Штатах люди не любят жить в крупных городах, хотя, конечно, их глубинка - это как наш центр Москвы по инфраструктуре, но все-таки. Сложно сказать, не знаю.

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