И и чего сложного ? Вот послал ты один байт: dll39_write_byte(4,0); dll39_message_send(con.server,0,0,0)
И смотри что пришло сервер в формате HEX . По умолчанию 39длл прикрепляет заголовок к TCP пакету из 2 байтов
Code
dll39_set_format(sockid,method,sepstr) При отправке сообщений через tcp-сокет сообщения должны быть разделены. DLL предоставляет два метода разделения. dll39_format_binary: Двоичный режим. Установка этого режима приводит к тому, что каждое tcp-сообщение имеет 2-байтовое числовое прикрепление, которое содержит информацию о данных в этом сообщении. Этот метод установлен по умолчанию и рекомендуется к использованию в онлайн-играх.
Но порядок байтов в 39длл в заголовке идёт наоборот
поэтому первые два байта в ТСP пакете будут иметь вид чтото типа этого 0100h (два байта меняются местами , по идеи должно быть 0001h , но в 39dll сделано нестандартно) третий байт будит твоя информация 04h
Сообщение отредактировал Qvant - Суббота, 24 Сентября 2011, 16:38
lumennes, вообщето это ты должен нам показать ример передачи данных с клиентом GM Проще написать код с нуля чем разбираться в чужом да ещё и написанным новичком .
lumennes, в чём возникнула сложность ? 1)сначала делаешь клиент/сервер на GM по справке 39длл 2)изучаеш протокол ТСР и его реализацию на С++ 3)передаёш данные от GM к вашей программе на С++ на локалхосте
Тут внимание ! 39 длл в заголовке передаёт размер пакета в обратном порядке , а функция передачи строки оканчивается символом "00" а так всё стандартное.
Под народом понимают, в частности, этнос, то есть определённую группу людей, отличающуюся общностью ряда признаков — языка, культуры, территории, религии, исторического прошлого и т. д..
раньше было 5/5
а сейчас думаеш почему делают язык только месный и учебники истории переписывают ? Да чтоб посильнее народ разделить.
Раньше был один народ , а теперь стало два. Когда я приесжал в гости Николаев и Херсон 20 лет назад - такие же люди как и в Туле и разговаривали на русском. Единственное отличие что они некоторые и свой украинский язык и у некоторых был акцент. Да и когда мои двоюродные братья приесжали в гости , то тоже чувствовали как дома. Разные народы видно сразу - сравни азиата с африканцем или индусом.
Меня бесит, как некоторые идиоты орут на плохую украинскую игру: "Хохлы - тупые!", а как только что-то стоящее, так: "Это не украинская игра, а общая - славянская". Все игры, сделанные в Украине - украинские, ибо студия тоже украинская и работники украинские. И общим клеймом метить не стоит!
Примерно 20 лет назад я несколько раз ездил на украину - тогда был один народ. Не было никакой разницы русский , белорус или украинец. А сейчас каждый считает что "я лучше всех , а сосед урод"...грусно
psihrus, лучше всего , на мой взгляд , лучше всего для этого подходит HTML c помощью программы Dreamweaver CS3 . В этой программе удобно редактировать HTML без знаний разметки.
NSakenov, не там ковыряеш ... если у тебя падает ФПС после добавления фонов а до этого было всё нормально , то при чём деактивация тех объектов которые не забивали ФПС ?
Вот сидит телепаты на форуме и дают советы Вот смотри если у тебя большая комната и один из видов на всю комнату (например миникарта) , то все твои зацикленные фоны будут отрисовываться каждый Draw , уменьшатся и выводиться на экран ... делаем оптимизацию так - включаем нужный вид (миникарту) , отрисовываем фоны в комнате (ГУИ, игроков врагов отрисовывать не надо) , отрисовываем её в сурф , переводим сурф в спрайт, выключаем вид , а на место этого вида выводим этот спрайт .
В итоге каждый Draw рисуется один небольшой спрайт вместо всей комнаты
Второй вариант , у тебя большая комната но только один вид в размер экрана который захватывает только небольшую часть комнаты . Тогда может твои воны просто непоместились в память видеокарты полностью и постоянно подгружаются. Пореж на тайлы скажем 256х256 . Используя дата структуру "сетка" запиши в неё номер тайла вот теперь перемещая вид координаты округляй до 256 и выделяй из сетки нужный регион , получаеш из этого региона номеров тайлов и отрисовываеш их в сурф. При движении , орисовываеш столбец или строку следующих тайлов из сетки , смещаешь сурф и снова отрисовываеш сурф . Всё будит без тормозов .
PS.Надеюсь умееш работать с видами , сетками , сурфами ? PS2. А вообще не стоит распологать объекты в комнате , а лучше програмно добалять/удалять при не обходимости , лучше и быстрей будит всякой деактивации.
NSakenov, порежь фон на тайлы и выводи на экран нужные куски . Если положение фонов меняется нечасто , то можно в сурф отрисовывать - будит ещё быстрее .
zxc76, кстати , лучше не шифруй клиент , чтоб на слабые места указали в первых бивнях их было много. а перед релизом игры тогда можно будит и зашифровать исходник , ресурсы и ТСР пакеты.
графику сразу выноси из экзешника и сервер обязательно должен быть не ГМ!
now_Hking, вот пример подходиш к человеку на улице и спрашиваей "умееш копать ? мне нужен помошник вскопать дачу" Много найдёш желающих ?
сначала заинтересовать должен , что умееш делать ? какие законченые игры есть ? может свой движок разработал? имееш хорошие авторские спрайты ? можеш деньгами заинтересовать ? ... и т п хотябы законченый диз до есть ?
если заинтересуеш тогда народ к тебе потянется , а написать "я тут придумал как сделать игру мне нужны кодеры , художники , модеЛЬеры" , тут каждый день появляются по многу раз и ничего толкового из этого ниразу не вышло
zxc76, смотрю работа над изометрическими Бивнями 2 полным ходом
раздели расположение изометрических тайлов и движение : а)нумерация идёт не по порядку - там как раз всё идёт по порядку , даже можно использовать двумерный массив для расположения тайлов . Но единственное , надо учитывать что на карте нечётные ряды смещены на половину ширины тайлов относительно чётных. б)движение лучше к изометрическим клеткам не привязывать .Для клиент/сервер лучше использовать такую систему :
1)начальное положение персонаж стоит в сервер ничего не передаётся 2)кликаем мышкой на карте клиента один раз - устанавливается объект конца движения в сервер отсылаются точное время начала движения и координаты начала и конца движения 3)персонаж идёт опять в сервер ничего не передаётся 4)как только персонаж сталкивается с объектом конца движения - этот объект удаляется и в сервер отправляется одиночная команда что игрок дошёл до конца 5)если персонаж ещё недошёл до точки окончания движения а игрок кликнул в другую точку то переходим в пункт 2)
а всем остальным клиентам если персонаж находится в пределах видимости тоже отправляется точное время начала движения и координаты начала и конца движения этого игрока и каждый клиент рассчитsвает его движение самостоятельно. что в изометрии что в виде сверху один алгоритм.
Да не на много. Скрипт ГМОН'а исполняется оин раз и переводит все в объекты и листы ГМ.
если файл не большой то разницы почти не будит , но если объёмный ? Чистить пробелы , перебирать строку по одному символу а потом запускать ранером займёт много времени ... надо будит потестить и сравнить на сколько разница в производительности будит.... к тому же хоть и исполняется один раз , но во время загрузки , когда ещё и графику надо подгрузить - пользователь нелюбит ждать .
Знал бы JSON может и наглядней было бы , но как то по старинке привычней _New = object_add() чем _New:{ } веди скрипт пишется в самом ГМ отрабатывается и если нет ошибок то можно просто скопировать и вставить в блокнот. А изначально в блокноте писать неудобно - нет там подсветок скрипта и указателя ошибок .
многомерные ассоциативные массивы, это меня очень пугает ! массивы вообще вредны для GM не заточен он под это . Лучше Dll для многомерных массивох на ёё поискать ...а что такое ассоциативные ?
все скрипты собраны в одну папку - если в исходнике много ресурсов ~2000штук , скриптов , объектов то наблюдались мной тормоза при открытии или запуске исходника
Самый идеальный ГМОНА вариант который я хотел бы увидеть - это : а)сохранение всех команд , объектов и тп в бинарном формате б)расшифровка команд в Dll , на каком нибудь быстром языке ,а не GML в)Dll записывает напрямую команды в ячейки памяти , а не в скрипты GML
ещё недостаток ГМОНа - зачем таскать кучу скриптов в экзешнике , которы не используются - например мне не нужна анимация , а выковыривать вручную не хочиться
Йакуд, про аргументы в 8.1 я забыл , лучше сразу убрать неиспользуемые аргументы чтоб было совместимость с версиями выше 8.0
Хоть убей невижу явных плюсов ГМОНА , хотя наверняка они есть :
На мой взляд тяжело на не быстром GML обрабатывать парсерами ранерами , если будит большой проект . Ведь намного проще написать во внешних текстовых файле примерно так
_New = object_add()
object_event_add(_New,ev_create,0," direction = 0; image_angle=direction; speed=1; image_speed =0 image_index =2;");