bodja
Спасибо, класс аякса буду расширять по необходимости, за сегодня хочу класс карты закончить.
Поздравляю всех защитников отечества!
ох, вы чем тут упоролись, что аяксы вручную пишете?
kapa6ac
Открой для себя jQuery и не занимайся реализацией того, что другие реализовывали миллион раз.
Это во-первых. Во-вторых, я не очень понимаю, зачем в реалтаймовой игре аякс - это ведь жутко медленно.
Тут нужны вебсокеты. И опять же лучше взять готовое решение вроде Socket.IO, чем писать свой велосипед.
В-третьих, я не увидел рассуждений о том, как ты собираешься бороться с фризами от сборщика мусора в JS.
Рано или поздно эта проблема выскочит как чёрт из табакерки и заставит серьёзно пересмотреть всю архитектуру
программы. По крайней мере, почитай статьи об этом, прежде чем разводить кучу функций-конструкторов.
p.s. А что вообще перенесено в браузер на данный момент?
петрушка - хватит умничать.
Я не считаю нужным нагружать страницу большим количеством тяжелых библиотек.
а потому - многие вещи (такие как jQuery и jQueryUI и прочие идут боком - потому как для решения стоящих задач можно обойтись более примитивными средствами)
И так на страницу будет подключено много чего тяжелого (Three.js, commet или websocket, irc клиент, вконтакте или воднокласниках api и прочее ...)
kapa6ac
> Three.js
ок, подписался на тему.
кто-то ведь должен быть первопроходцем, лол.
со сборкой мусора бороться достаточно просто - не разводить кучу объектов. Создал объект от класса WORLD, загрузил все данные и работай себе прекрасно. Новые объекты не создаются, данные не грузятся, вся работа заключается в вызове калькуляторов и все.
kapa6ac
Ещё можно перенести часть нагрузки на вебворкеры.
я вот хочу еще посмотреть работает ли распаралеливание вычислений с помощью map.reduce в браузерном js. Было бы прикольно загрузить все 4 ядра :)
а на воркерах можно распаралелить отрисовку в разные слои (один воркер грунты отрисовывает, а второй все что над ними)
kapa6ac
По-моему, нельзя перекинуть на воркеры работу с канвой. Они же не имеют доступа к DOM.
я думаю так - что даже если воркер не может обращаться к канве напрямую - можно воркеру передать ссылку на объект канвы. По своей природе воркер должен скопировать объект к себе а не получить ссылку (и тут возможно много вариантов по которым это не сработает) но если все таки воркер сможет работать с копией канвы - то он отрисовывает необходимое и передает канву обратно обратно (надо попробовать).
Тут возможно что из-за прогона туда обратно такого здорового объекта как канва вся полезность воркера сведется к 0, но попробовать стоит
а далше воркер не завершается а ждет следующего обращения с координатами того что надо обработать (канва ему уже не передается а передается только координаты того что рисовать, и получив это воркер рисует и возвращает отрисованную канву (ну или не всю канву а только 2D контекст. и так пока страницу не закроем.
а можно вообще обертку для удобства использования незавершающихся воркеров сообразить (назвать ее THREAD и юзать)
kapa6ac
А сервер на чём будет?
а проект пока по созданию движка. А то что я про игру в видео говорил - это пока только задумка и при том не самая первая которую буду делать на этом движке
а вообще кручу в голове мысли как серверные функции тоже на браузеры играющих кинуть - но пока никаких толковых мыслей нет.
все вот такие утопические варианты в голову лезут:
на JS налобать клиент к IRC сетям (скорее всего чистым JS тут не обойтись)
сами IRC сервера не мои - обычные публичные сервера.
сделать на нескольких IRC серверах закрытые каналы (на каждый сектор карты по каналу)
сделать на нескольких других IRC серверах закрытые каналы общего назначения (клиентские машины должны содержать JS который будет рулить необходимым количеством каналов общаясь меж собой служебными пакетами через ирц сервера общего назначения. Тут много надо продумать чтобы сумма клиентских машин работала как единое целое, следило за нагрузкой на каналы, рассылала кому необходимо инвайты на общие каналы и на каналы секторов и много чего еще)
при заходе в игру клиентский скрипт подключается к одному из специальных каналов общего назначения где ему выдается необходимая инфа для встраивания в общий вычислительный кластер клиентских машин после чего он также берет на себя часть вычислительных задач этого кластера серверов
тут задача скорее всего должна решаться так:
-Ирц сети рассматриваются как каналы обмена информацией и частичного ее хранения (в топик каналов секторов можно писать инфу о постройках в секторе)
-написание некоторого функционала для подключения к ирс сетям (сразу нескольким) и создание своего протокола обмена информацией внутри протокола ирц сети, а также отслеживания таких моментов как флуд (чтобы не выкидывало с каналов)
-написание некоторого кластерообразующего(или облакообразующего) функционала задача которого влиться в общий вычислительный кластер при входе игрока в игру
также этот кластер(облако) должен уметь хранить информацию в браузерах клиентов, и обеспечивать механизмы дублирования этой информации (клиенты не сидят в игре постоянно)
-построение на этой облачно-кластерной системе серверного функционала игры
-ну и т.д. и т.п.
PS: теоретически такой выверт возможен, Возможно и на практике тоже. Но сам я такое не напишу и даже не собираюсь:) И у меня есть большие сомнения в целесообразности такого подхода.
PPS: но если всеже такую штуку написать - это будет просто бомба с точки зрения (а вам так слабо)
Тема в архиве.
Тема закрыта.