Приветствую Вас Гость
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Страница 3 из 4«1234»
Модератор форума: ADSU1231, Bizunow, schika 
Форум » Проекты » Идеи » Безкейсовая модель
Безкейсовая модель
segg3rДата: Воскресенье, 13.03.2011, 20:29 | Сообщение # 31
Генерал-майор
Группа: Проверенные
Сообщений: 260
Статус: Offline
так ну ща цикл бесконечный начнется)

это не фигня, есть где применять, я просто не вижу гигантских преимуществ, что приводит меня к мысли, что я все равно буду делать по старому

 
VinchensooДата: Воскресенье, 13.03.2011, 20:46 | Сообщение # 32
Генерал-майор
Группа: Проверенные
Сообщений: 390
Статус: Offline
Quote (stasundr)
Сейчас я предлагаю отказаться от пакетов, в которых содержится несколько переменных. Возьмем абсолютно все переменные (кроме локальных) и занесем их в один список. Если кто-то подключился - добавляем еще, если отключился - удаляем из списка. Каждой переменной дадим уникальный номер. Если использовать short, то, соответственно, хватит на 65+ тысяч переменных.

Ну... Щас я оторвусь=)
1. На 256 метров оперативы хватит на меньшее число переменных=)
2. Очень неудобно хранить туеву кучу ненужных значений, чтобы было вроде как удобно их менять
3. Есть такая штука- уровень приватности переменных(он же видимости). Т.е. из-за совпадения имен могут начаться баги, лаги и все прочее.
4. С динамическим массивом это шняга будет работать очень плохо
5. Выйгрыша в скорости она нифига не даст, т.к. все проверки просто спрятаны в длл, иначе тебе придется писать свой интерпритатор на предложенной ранее асм-е.
6. Гибкости в управлении нет. Непонятно, что произойдет при переназначении имен.
Да и вообще непонятно, зачем нужны такие сложности в реализации. Чтобы свое сделать?
99% разработчиков не догадываются о значении хеш-функции, не знают, где и зачем ее использовать, про криптоалгоритмы я воообще молчу.
Вопрос, нафига им такая канитель? Плюс при рассинхронизации начнуться такие лаги, что вы будете вспоминать сервер на однопоточном гм как сказку=)
Quote (stasundr)
Нет пакетов, есть конкретное обращение к переменным, которым занимается сама игра автоматически. Не нужно знать команды пакетов, не нужно помнить порядок переменных, не нужно следить за корректностью данных (лишь бы тип совпадал).

Суть модели прояснилась, но я уже описывал ее выше=)
Это типичное построение высокоуровневой сети. Создать клиент, создать сервер, свести переменные, изменить значения. Жутко неудобно.
Примеры: Юнити(вроде как), Радуга, стандартный гм мультиплеер несколько схож
К тому же, есть минус- двум разным переменным нельзя сопоставить значение на сервере. Опять-таки, баги-лаги-баги и лаги=)
Quote (stasundr)
Гм - интерпретатор

Гм компилирует свой код в ехе=) Там свой компилятор, насколько мне известно. А вещи это разные.
Quote (segg3r)
это не фигня, есть где применять, я просто не вижу гигантских преимуществ, что приводит меня к мысли, что я все равно буду делать по старому

Я лично вижу гигантские недостатки. Описаны выше. Все проекты ААА-класса используют сокетную модель.
И не просто так. Но там другие алгоритмы записи. Я с ними особо не разбирался. Только пишут они в файл структуру с определенными аргументами, криптуют ее, защищают от подмены, шлют, принимают, декриптуют, работают.
И лишний мусор нафиг уйдет=)
Для простоты можно первым делом слать хеш(id клиента).
Если мессадж левый и ай-ди клиента в бд не записан, игнорим мессадж и рвем сокет.





Сообщение отредактировал Vinchensoo - Воскресенье, 13.03.2011, 20:47
 
zxc76Дата: Воскресенье, 13.03.2011, 21:06 | Сообщение # 33
Генерал-полковник
Группа: Администраторы
Сообщений: 845
Статус: Offline
Полегчало?) Я почти ничего непонял. Но про то что переменные будут путаться сомниваюсь.
Если бы я был с компом, я бы попробывал реализовать этот метод, без потокав, всякими циклами вообще)


 
stasundrДата: Воскресенье, 13.03.2011, 21:29 | Сообщение # 34
Въехавший
Группа: Проверенные
Сообщений: 42
Статус: Offline
Vinchensoo, Я с первого твоего поста понял и настрой, и отношение о чем сразу же предупредил. Ты в свою очередь вроде как раскланялся. Внезапно, мы до сих пор тут препираемся.
Гм - интерпретатор, вне зависимости от твоих соображений. Ты не знаешь этого, но по-прежнему уперто тычешь своё "авторитетное" мнение.
Я даже комментировать не буду, то, что ты понаписал. "Это будет тормозить, лаги-баги, баги-лаги". Как будут аргументы - так и поговорим.

И да, я тоже могу ставить смайлики и показывать доброжелательность

Добавлено (13.03.2011, 18:29)
---------------------------------------------
zxc76, конечно, ничего не будет путаться) Письма (на нормальной) почте же не путаются и приходят по нужному адресу. И, да, его можно и без потоков попробовать

 
VinchensooДата: Воскресенье, 13.03.2011, 21:32 | Сообщение # 35
Генерал-майор
Группа: Проверенные
Сообщений: 390
Статус: Offline
Quote (stasundr)
Vinchensoo, Я с первого твоего поста понял и настрой, и отношение о чем сразу же предупредил. Ты в свою очередь вроде как раскланялся. Внезапно, мы до сих пор тут препираемся.

Не удержался, простишь меня?
Quote (stasundr)
Гм - интерпретатор, вне зависимости от твоих соображений

А ты знаешь разницу между интерпретатором и компилятором?) Я и написал, по-моему, это значит, что я не уверен на 100%.
А ты из 3 страниц нашел мою ошибку и развел ритуальный костер.
Аргументы я тебе уже выдал, система не нова и много раз использовалась, мало?)
Какие ты хочешь аргументы? Чтобы я сел, за тебя написал, проверил скорость работы и сказал, я таки был прав?)
Твоя идея, ты уже сутки нам обещаешь пример, где он?
На чем длл?
Как реализуется выделение потоков?
Как синхронизируются переменные?
Я тебе сверху 7 пукнтов написал, которые вполне вменяемы и которые ты, как автор, должен прокомментировать. А вместо этого ты сидишь и хамишь=)
Верх профессионализма.
Я, хотя бы, умею признавать свои ошибки и не ухожу от прямых вопросов=)
Quote (stasundr)
Я даже комментировать не буду, то, что ты понаписал. "Это будет тормозить, лаги-баги, баги-лаги". Как будут аргументы - так и поговорим. И да, я тоже могу ставить смайлики и показывать доброжелательность

А может потому, что сказать нечего? =)
Смайлики высказывают не доброжелательность, а наоборот.
Ты сам себя поставил в такую позицию еще в теме Сержа, считая себя профессионалом несмотря на тот факт, что кроме 3 страниц базара мы семпла и примера реализации хотя бы 1 функции из предполагаемой длл не увидели.
ЗЫ. А ты в курсе, как легко происходит перехват данных при обращении к длл?)
Эт я к тому, к чему приведет твой парсинг. Да и вообще, с точки зрения безопасности, связывать переменные на сервере и в клиенте... Это ж убиться можно. Ексепшин в клиенте будет вызывать ексепшин и на сервере, иначе не избежать 100500 проверок, которые тебе придется сделать.
Вот тебе еще 1 минус, теперь есть точно 3 штуки
Quote (stasundr)
zxc76, конечно, ничего не будет путаться) Письма (на нормальной) почте же не путаются и приходят по нужному адресу. И, да, его можно и без потоков попробовать

Знаешь как сработает компилятор С++, даже не сдалав тестов. Да ты профи
ЗЫЫ. Вообще мне пофигу, я тупо выпрашиваю бан у Фила уже месяц, заодно достаю людей.





Сообщение отредактировал Vinchensoo - Воскресенье, 13.03.2011, 21:33
 
stasundrДата: Воскресенье, 13.03.2011, 21:48 | Сообщение # 36
Въехавший
Группа: Проверенные
Сообщений: 42
Статус: Offline
Vinchensoo, omg, вот и ты сорвался. Какой еще предполагаемой длл? Окстись. Если ты про gmthreads, то она существует с незапамятных времен, а у меня и в мыслях не было писать длл.

Приду с работы, напишу ответы на твои комментарии, но больше тебе на провокации отвечать не буду.

Сообщение отредактировал stasundr - Понедельник, 14.03.2011, 00:06
 
VinchensooДата: Воскресенье, 13.03.2011, 21:58 | Сообщение # 37
Генерал-майор
Группа: Проверенные
Сообщений: 390
Статус: Offline
Quote (stasundr)
Vinchensoo, omg, вот и ты сорвался. Какой еще предполагаемой длл? Окстись. Если ты про gmthreads, то она существует с незапамятных времен, а у меня и в мыслях не было писать длл.

А как ты будешь с потоками на гм работать?)

Удели 20 минут, сделай мне пример реализации способа, и я от тебя отстану=)

По крайней мере, с предположительными трудностями.

Не обязательно, чтобы он компилился, код прочту на С++, дельфи, Гмл, чем угодно=)

Мне просто интересен принцип реализации и тест на его скорость.

Если он будет работать нормально, я тебе буду каждый день по плюсику ставить и публично извинюсь, сможете официально меня считать быдлом, хамлом, школотой, список можешь сам составить=)

Даже щас тебе плюсик поставлю пойду.

Ты меня просто выбесил своим предыдущим постом, мне аж легче стало)
А где я сорвался-то? Про "злю людей" что ли?
Я этим каждый день занимаюсь





Сообщение отредактировал Vinchensoo - Воскресенье, 13.03.2011, 21:59
 
stasundrДата: Воскресенье, 13.03.2011, 22:58 | Сообщение # 38
Въехавший
Группа: Проверенные
Сообщений: 42
Статус: Offline
Vinchensoo, устал уже повторять про многопоточность http://gmc.yoyogames.com/index.php?showtopic=390517

Сообщение отредактировал stasundr - Воскресенье, 13.03.2011, 22:58
 
VinchensooДата: Воскресенье, 13.03.2011, 23:07 | Сообщение # 39
Генерал-майор
Группа: Проверенные
Сообщений: 390
Статус: Offline
Ладно, все равно жду пример)


 
segg3rДата: Воскресенье, 13.03.2011, 23:15 | Сообщение # 40
Генерал-майор
Группа: Проверенные
Сообщений: 260
Статус: Offline
о, и я был в этой темке. дак а вы потоки для чего использовать будете?
 
stasundrДата: Воскресенье, 13.03.2011, 23:45 | Сообщение # 41
Въехавший
Группа: Проверенные
Сообщений: 42
Статус: Offline
segg3r, обрабатывать сообщения от клиентов с максимально возможной скоростью. Нагрузить и второе ядро проца, тем самым разгрузив первое. Ничего экстраординарного.

Vinchensoo,
1. Знаю разницу.
2. Проехали, хватит фигней страдать.
3. Нет, писать ничего не обязательно. Аргументируй, почему обработка кейса длинной в n байтов должна быть быстрее, чем обработка прямого обращения к переменной при той же длине сообщения.
4. Я сутки не обещал пример. Сказал, потом посмотрите, как сделаю.
5. С длл разобрались.
6. Потоки с помощью длл. С длл разобрались.
7. Переменные синхронизируются непосредственно. Если тебе так будет проще, можешь представить что у тебя столько кейсов, сколько переменных.

И хватит уже говорить про безопасность. Это неуместно здесь. Я попытаюсь объяснить. Попроще.
Есть сервер. Есть база данных. Есть клиент.
Клиент взаимодействует только с сервером. Я повторяю, только с сервером. Не с бд. Клиент не имеет доступа к базе данных. Вообще.
Сервер производит строгую проверку принимаемых данных. Тут все просто. Сначала сверяем типы. Если все акей, сверяем адекватность данных. Это сделать тоже просто. В сервер встроен клиент. Без графики, только механика. Если действие возможно на клиенте сервера, оно возможно и в обычном клиенте.
Сервер хранит все переменные в бд. Бд для того и сделаны, чтобы в них данные хранить. В данном случае это локальная sqlite. Никто кроме сервера не имеет доступ к бд. Если не повреждать сервер и бд "изнутри", то все находится в устойчивом состоянии.

 
VinchensooДата: Понедельник, 14.03.2011, 00:07 | Сообщение # 42
Генерал-майор
Группа: Проверенные
Сообщений: 390
Статус: Offline
Если речь идет о возможности присваивания значения в клиенте и синхронизации с сервером- это дырка=) Ибо сервер пишет, а не только читает. Да, можно ставить автокрипты + проверку по хешу, но сложно и непродуктивно, опять-таки.

Quote (stasundr)
3. Нет, писать ничего не обязательно. Аргументируй, почему обработка кейса длинной в n байтов должна быть быстрее, чем обработка прямого обращения к переменной при той же длине сообщения

Зависит о реализации, поэтому и требую пример. Сделать, чтобы было также по скорости- сложно.

Мне уже лень спорить, я жду, пока сделаете пример. Как будет конкретно, что запустить или поковырять, будем обсуждать.

А щас какое-то мерянье приборами началось=)

Quote (stasundr)
Сервер производит строгую проверку принимаемых данных. Тут все просто. Сначала сверяем типы. Если все акей, сверяем адекватность данных. Это сделать тоже просто. В сервер встроен клиент. Без графики, только механика. Если действие возможно на клиенте сервера, оно возможно и в обычном клиенте.

Сервер на гм? Тогда к чему такие сложности=) Я думал, сервер дельфи/С++.

В общем, без примера становится все еще непонятнее, особенно про безопасность)



 
QvantДата: Понедельник, 14.03.2011, 01:51 | Сообщение # 43
Въехавший
Группа: Проверенные
Сообщений: 64
Статус: Offline
Хм... а какие плюсы вашей безCASEвой модели ?

Представим , у нас баг и очень сложно его будит найти , так как в любой момент клиент/сервер может изменить любую переменную !
Нет уж лучше разбить на блоки команд (например торговля , битва и т д) и быть уверенным что деньги в бою , или Hp от торговли никак не изменятся .

Кстати , лучше применить State-машину .
Если коротко то , из пакета распарсить команды и их значения , загоняем их в стек а потом последовательно их выполняем.

 
stasundrДата: Понедельник, 14.03.2011, 02:59 | Сообщение # 44
Въехавший
Группа: Проверенные
Сообщений: 42
Статус: Offline

Qvant, хорошо, представим. И в чем проблема? Обычная отладка. Ты говоришь о коде, подобном other.hp -= my_player.money. Эту (до нельзя странную) ошибку можно совершить и с кейсами. То _каким_способом_ ты синхронизируешь данные на семантику этих самых данных не влияет.

State-машина, как ты ее называешь, не лучше. Вот это как раз то, против чего протестовал Vinchensoo. Я тоже против такого. Уж лучше кейсы)

Сообщение отредактировал stasundr - Понедельник, 14.03.2011, 03:00
 
QvantДата: Понедельник, 14.03.2011, 03:40 | Сообщение # 45
Въехавший
Группа: Проверенные
Сообщений: 64
Статус: Offline
stasundr, да отладчик никто не отменял , не обязательно hp -= my_player.money , просто если считывать/записывать переменные в любом месте кода то намного легче ошибиться .
А увидив в кейсе торговли обращение к hp - визуально легче найти баг особенно в чужом коде

Хм... а чего вам State-машина не нравится ?
Разве класическая GM структура с сотней объетов лучше ?

Вот пример SM:
Создадим приоритетную очередь
vrbSM = ds_priority_create()
ds_priority_add(vrbSM,scStart_Game,0)// scStart_Game - начальный скрипт
в шаге прописать
while (ds_priority_empty(vrbSM) = 0 )
{
script_execute(ds_priority_delete_min(vrbSM ))
}

В scStart_Game записываем какие скрипты надо выполнить и всё
ds_priority_add(vrbSM,scTerrain_Tiles,1)
ds_priority_add(vrbSM,scTerrain_Road,1)
ds_priority_add(vrbSM,scTerrain_River,1)

пришёл пакет с сервера - разбиваем на команды и выполняем поочереди...

В чём плюс ? Гибкость выполнения конечного автомата , легко редактировать
Минус много вызываемых скриптов и возможно мёртвое положение .... хотя не факт что быстрее много внешних скриптов или много объектов в комнате!
Ведь каждый скрипт вызывается помере необходимости а у объектов со "степом" код выполняется каждый шаг

 
Форум » Проекты » Идеи » Безкейсовая модель
Страница 3 из 4«1234»
Поиск:
Хостинг от uCoz