IPB

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Одновременный ход
asm
сообщение 04 Dec 2008, 14:27
Сообщение #1

Member
Сообщений: 92
Спасибо сказали: 23 раза




Вчера долго трассировал экзешник, на предмет запрета прокладывания маршрута в чужой ход, дело немного осложняется частыми вылетами игры под трассером, частым отвалом соединения.
Ещё небольшая проблема, что почему-то, немного по-разному прыгает.
Кое-какие изменения уже внёс (спасибо Берсерку за разлоченный экзешник)
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 05 Dec 2008, 01:17
Сообщение #2

Member
Сообщений: 92
Спасибо сказали: 23 раза




Мляяяяяяя........
Кажись получилось!!!!!!!!!!!!!!!!!!!

П.С. Я в восторге!!!!!!
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 05 Dec 2008, 08:19
Сообщение #3

Member
Сообщений: 92
Спасибо сказали: 23 раза




Почти до утра сидел ковырялся в ассемблере
и 1 раз под отладчика получилось - начал прокладывать маршруты в чужой ход!!!!
Но потом повторить больше не удалось. А в конце вообще защёл в тупик ((((
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 05 Dec 2008, 11:04
Сообщение #4

допустим, мяў
Сообщений: 24 049
Спасибо сказали: 13350 раз




Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 05 Dec 2008, 16:50
Сообщение #5

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(hippocamus @ 05 Dec 2008, 11:04)
Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении.

если быть точным, то сотрется только изображение
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 05 Dec 2008, 17:28
Сообщение #6

Member
Сообщений: 92
Спасибо сказали: 23 раза




Цитата(gamecreator @ 05 Dec 2008, 19:50)
Цитата(hippocamus @ 05 Dec 2008, 11:04)
Маршрут сотрётся, если по нему пройдёт другой герой. Хотя не знаю, может он и восстановится при переключении.

если быть точным, то сотрется только изображение

А в свой ход восстановится
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 07 Dec 2008, 19:04
Сообщение #7

Member
Сообщений: 92
Спасибо сказали: 23 раза




Ангел, спасибо что разместил инфу про Era.
Модераторы продублируйте тот пост Ангела в отдельную тему.
Ещё вопросик насчёт совместимости с ТЕ: получается только необходимо проверить что в ТЕ не используются переменные v50-v99 а так всё должно работать.
По поводу запароленых сейвов... не пойму почему невозможно.... у тя же я так понял есть возможность подключать dll-ки + уже есть GZipWrite и Рид
Автосейв каунтер - это и есть прога которая просто переименовывает текущий автосейв в автосейв текущего дня.

Расскажу как идёт моё обучение ассемблеру:
1) Спасибо сергрою что посоветовал OllyDbg он гораздо удобнее и безглючнее чем W32dasm
2) Оч долго дебажил код, смог найти функцию и добится прокладки маршрута в чужой ход, но после передачи всё возвращается как было (((
нашёл место где передаётся клик в формате карты X, Y, Z
понял что там структура посложнее с маршрутами, чем я думал сначала
и придётся ещё немало поковырятся что бы разобратся и реализовать правильно
понял что теоретически реально реализовать ОДНОВРЕМЕННЫЕ ХОДЫ!!!!
3) Где-то недавно видел на форуме была ссылочка на дизасемблер, который генерит дополнительно псевдо код, даже посмотрел там на сайте видео курс - скиньте плиз если кто знает. Мб проще будет разобратся со всеми этими call'ами
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 11 Dec 2008, 10:05
Сообщение #8

Member
Сообщений: 92
Спасибо сказали: 23 раза




Сегодня почти до утра опять копал код.
Есть подвижки:
Удалось в чужой ход совершать все действия: ходить, драться, собирать ресурсы
Но после передачи хода, всё вернулось на круги своя ((((
Правда и было это реализовано корявенько:
в переменной по адресу 69CCFC
содержатся следующий значения:
4160B18 - если сейчас ход красного игрока
4160С80 - если ход синего игрока
видимо и так далее для остальных цветов.

И по этим адресам всякие структуры
соответственно если играешь красным, то в 4160B18, а 4160С80 нули.
По адресу [69CCFC+4] - вроде текущий выбранный герой


Если играешь красным игроком, то в твой ход 69CCFC = 4160B18, после передачи хода = 4160С80
Я после передачи 4160С80 изменил на 4160B18 и смог делать все действия с некоторыми бажками, правда все действия совершал от имени синего игрока )))
т.е. если подходишь к синему игроку, то с ним открывается диалог передачи войск, а если к своему, то битва ))))

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

P.S. ИДА + HEXRay - рулит для исследования кода
OllyDbg - для изменения на лету в дебагере


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Aнгeл_*
сообщение 11 Dec 2008, 19:07
Сообщение #9







Имхо, всё равно идёт сихронизация между игроками, потому изменения всегда будут исчезать.
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 11 Dec 2008, 19:09
Сообщение #10

допустим, мяў
Сообщений: 24 049
Спасибо сказали: 13350 раз




Хитро!
В принципе даже подмене своей принадлежности можно найти применение, если подумать.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Хмм.._*
сообщение 11 Dec 2008, 20:00 (Сообщение отредактировал Хмм.. - 11 Dec 2008, 19:58)
Сообщение #11







Цитата(asm @ 11 Dec 2008, 10:05)
4160B18 - если сейчас ход красного игрока
4160С80 - если ход синего игрока

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

Добавлено ([mergetime]1229014805[/mergetime]):
Цитата(hippocamus @ 11 Dec 2008, 19:09)
Хитро!
В принципе даже подмене своей принадлежности можно найти применение, если подумать.

Это может привести к багам. Особенно если это провернуть с ИИ игроком. Например захват своего собственного замка? или еще чего.
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 11 Dec 2008, 21:07
Сообщение #12

Member
Сообщений: 92
Спасибо сказали: 23 раза




Цитата(Aнгeл @ 11 Dec 2008, 22:07)
Имхо, всё равно идёт сихронизация между игроками, потому изменения всегда будут исчезать.

Ну я же говорю что ща надо копать в сторону, что бы принимать не все изменения. Это долгая, трудная и кропотливая работа, но она возможна!

Цитата(hippocamus @ 11 Dec 2008, 22:09)
Хитро!
В принципе даже подмене своей принадлежности можно найти применение, если подумать.

ага, можно, например, играть одновременно за 1 цвет, обмениватся армией, заходить в чужой замок )))) но это пока только в теории )


Цитата(Хмм.. @ 11 Dec 2008, 23:00)
Цитата(asm @ 11 Dec 2008, 10:05)
4160B18 - если сейчас ход красного игрока
4160С80 - если ход синего игрока

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


Это да, динамическая память, значения выпадали всегда одинаковые, но это неважно. Это значение всегда можно найти по адресу 69CCFC
Одновременный возможен и это буде всё-равно пошаговая игра, как в Циве например. Ниже распишу идею как это должно работать и зачем всё это надо.

Цитата(Хмм.. @ 11 Dec 2008, 23:00)
Добавлено ([mergetime]1229014805[/mergetime]):
Цитата(hippocamus @ 11 Dec 2008, 19:09)
Хитро!
В принципе даже подмене своей принадлежности можно найти применение, если подумать.

Это может привести к багам. Особенно если это провернуть с ИИ игроком. Например захват своего собственного замка? или еще чего.

Баги тут неизбежны, надо оч аккуратно ковырять.

Одновременные ходы.
Проблема:
Онлайн партии оч интересны, но занимают оч много времени от 4 до 10 часов.
Притом что примерно до 3-го месяца игроки зачастую не втречаются, а просто собирают ресурсы и копят армию. Потом начиная примерно с 3-й недели (иногда раньше иногда позже) происходят некоторые контакты игроков.
Оч ранняя встреча игроков (на первой неделе) зачастую это баг генератора карт и чаще всего переигрывается, даже есть специальное правило рестарт по встрече до 116.
Решение:
Организовать одновременные ходы до ~117. В момент когда ходит красный игрок, синий тоже выполняет некоторые действия. Красный игрок передаёт ход, синий доделывает свой и снова передаёт красному. И так до 117. Потом игра переходит в обычный режим, что бы избежать багов.
Ну потом в качестве развития идеи можно что бы красный игрок мог разрешать по кнопке синему игроку делать одновременный ход.
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Aнгeл_*
сообщение 11 Dec 2008, 22:10
Сообщение #13







Цитата
Организовать одновременные ходы до ~117. В момент когда ходит красный игрок, синий тоже выполняет некоторые действия. Красный игрок передаёт ход, синий доделывает свой и снова передаёт красному. И так до 117. Потом игра переходит в обычный режим, что бы избежать багов.
Ну потом в качестве развития идеи можно что бы красный игрок мог разрешать по кнопке синему игроку делать одновременный ход.

Ерм код будет раскоординирован. Нереально писать скрипты для мульта с расчётом на одновременность.
Go to the top of the pageAdd Nick
 
+Quote Post
SAG19330184
сообщение 11 Dec 2008, 22:14
Сообщение #14

Организатор лиги WCL
Сообщений: 981
Спасибо сказали: 632 раза




идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать


--------------------
Постоянно играю на рейтинг www.heroes-III.com в онлайне через сервер GameRanger - в HoMM3 SOD или WT. Присоединяйтесь! Чужие подписи и аватары не читаю - отключил
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Хмм.._*
сообщение 12 Dec 2008, 01:11 (Сообщение отредактировал Хмм.. - 12 Dec 2008, 01:14)
Сообщение #15







Цитата(Хмм.. @ 11 Dec 2008, 23:00)
Цитата(asm @ 11 Dec 2008, 10:05)
4160B18 - если
Эти значения впринципе не постоянны (это динамически выделяемая память). И вероятнее всего указатели на структуру текущего игрока. И все равно одновременный ход врядли возможен. Игра не зря походовая, и все на этом завязано, одной структурой не обойтись


Это да, динамическая память, значения выпадали всегда одинаковые, но это неважно. Это значение всегда можно найти по адресу 69CCFC
Одновременный возможен и это буде всё-равно пошаговая игра, как в Циве например. Ниже распишу идею как это должно работать и зачем всё это надо.



Просто ты сделал упор на то,что по динамическим значениям определял какой игрок ходит. Если ты будешь писать патч для одновременного хода pop.gif , то данный метод определения игрока не прокатит. Впринципе как и сам патч имхо.
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 12 Dec 2008, 10:42
Сообщение #16

Member
Сообщений: 92
Спасибо сказали: 23 раза




Цитата(Aнгeл @ 12 Dec 2008, 01:10)
Ерм код будет раскоординирован. Нереально писать скрипты для мульта с расчётом на одновременность.

Что может быть раскоординировано? С какими проблемами можно столкнутся ещё?
Ну и в общем-то идея такая что бы одновременные ходы длились до того момента пока между игноками не случился контакт, т.е. до 117 гарантированно, а потом в обычном режиме. А если даже встретились до 117, то там пусть будут баги и делать рестарт.
Тут вот такую проблему вижу:
ЕРМ отрабатывает только в момент передачи хода, т.е. у красного на 111 начинается игра, отработали скрипты, а у синего пока нет, пока ему не передастся ход....

Цитата(Aнгeл @ 12 Dec 2008, 03:23)
Насчёт шифрования сейвов. Если нужна защита от обычных людей, не сведующих в ЕРМ и файлокопательстве, то делается всё просто.

Именно для них и надо!
Т.е. как я понял делается на одном ЕРМ?
Мог бы помочь реализовать?

Цитата(Хмм.. @ 12 Dec 2008, 04:11)
Просто ты сделал упор на то,что по динамическим значениям определял какой игрок ходит. Если ты будешь писать патч для одновременного хода pop.gif , то данный метод определения игрока не прокатит. Впринципе как и сам патч имхо.

Мне кажется что эти динамические значения постоянныы, хотя даже если они не постоянны, то не составит труда найли место где они расчитываются.
Более того, я думаю там надо будет не этим методом позволять ходить, а как-нть по-другому. Просто по-ковырявшись, я понял что это возможно, хотя и не легко.
Go to the top of the pageAdd Nick
 
+Quote Post
Wic
сообщение 12 Dec 2008, 13:46
Сообщение #17

Immortal
Сообщений: 2 124
Спасибо сказали: 726 раз




Цитата(SAG19330184 @ 11 Dec 2008, 23:14)
идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать
Можно какой вариант - ходы во время чужого хода исполняются (с определенными ограничениями), но не насовсем, а записываются в лог. При передаче хода происходит синхронизация, состояние игрока возвращается в начало хода, а потом лог записи воспроизводится.


Добавлено ([mergetime]1229078797[/mergetime]):
Цитата(asm @ 12 Dec 2008, 11:42)
Цитата(Aнгeл @ 12 Dec 2008, 03:23)
Насчёт шифрования сейвов. Если нужна защита от обычных людей, не сведующих в ЕРМ и файлокопательстве, то делается всё просто.

Именно для них и надо!
Всё так, но минимальные меры предосторожности всё же стоит принять. Например, хранить в переменной не пароль as is, а какую-нибудь производную от него, желательно труднообратимую (в смысле по производной трудно подобрать соответствующий ей пароль). Ибо для того, чтобы залезть редактором в сейв и найти свой пароль, особых знаний и не нужно.

А также спрятать куда-нибудь скрипт, который всё это реализует. Чтобы не в открытую в DATA\S писался, а где-нибудь в недрах лежал, причем неоткомментированный (для усложнения поиска).

Ну и само собой делать доступной функцию паролирования только в сетевых играх - для усложнения исследований вопроса.

А также не стоит обсуждать эту технологию в открытую на форумах, ибо народ их всё-таки читает.
Go to the top of the pageAdd Nick
 
+Quote Post
asm
сообщение 12 Dec 2008, 14:22
Сообщение #18

Member
Сообщений: 92
Спасибо сказали: 23 раза




Цитата(Wic @ 12 Dec 2008, 16:46)
Цитата(SAG19330184 @ 11 Dec 2008, 23:14)
идея хорошая если бы не баги. в любом случае часть наработок (если они будут) можно будет использовать
Можно какой вариант - ходы во время чужого хода исполняются (с определенными ограничениями), но не насовсем, а записываются в лог. При передаче хода происходит синхронизация, состояние игрока возвращается в начало хода, а потом лог записи воспроизводится.

Лог написать наверно возможно хотя и оч сложно. А вот потом по логу повторить все действия практически не реально.
Проще реализовать как я описал.

Цитата(Wic @ 12 Dec 2008, 16:46)
Добавлено ([mergetime]1229078797[/mergetime]):
Цитата(asm @ 12 Dec 2008, 11:42)
Цитата(Aнгeл @ 12 Dec 2008, 03:23)
Насчёт шифрования сейвов. Если нужна защита от обычных людей, не сведующих в ЕРМ и файлокопательстве, то делается всё просто.

Именно для них и надо!
Всё так, но минимальные меры предосторожности всё же стоит принять. Например, хранить в переменной не пароль as is, а какую-нибудь производную от него, желательно труднообратимую (в смысле по производной трудно подобрать соответствующий ей пароль). Ибо для того, чтобы залезть редактором в сейв и найти свой пароль, особых знаний и не нужно.

А также спрятать куда-нибудь скрипт, который всё это реализует. Чтобы не в открытую в DATA\S писался, а где-нибудь в недрах лежал, причем неоткомментированный (для усложнения поиска).

Ну и само собой делать доступной функцию паролирования только в сетевых играх - для усложнения исследований вопроса.

А также не стоит обсуждать эту технологию в открытую на форумах, ибо народ их всё-таки читает.

Это всё верно говориш. Главное начать двигатся в этом направлении.


Цитата(Монца @ 12 Dec 2008, 16:59)
Останется только быстро поправить лог. Про пароли - не стоит это того, читеров это не остановит, есть куча других способов играть не честно.

Защищатся стоит. По-моему 90%-95% читеров в компе не шарят. И если нет явного и легко доступного чита (вскрытие карты, сейва), то читерить и разбиратся не будут!
А если и начнут разбиратся, то возможно научатся ЕРМу и перейдут в разряд разработчиков, программистов и неинтересно им станет читерить.
А если потом ещё реп писать, то легко можно будет проверить.
Так что работать точно стоит в этом направлении.

Добавлено ([mergetime]1229080968[/mergetime]):
Кстати, САГ, ты же в этой теме спрашивал можно ли запретить переключатся по Алт+Таб. Я думаю это достаточно просто реализуемо. И это исключит АртМанщиков.
Но тогда сильно затруднит времяпрепровождение в чужой ход, а то вот я, например, смотрю фильмы, читаю форумы на чужом ходу.
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Aнгeл_*
сообщение 12 Dec 2008, 19:17
Сообщение #19







Ерм будет раскоординирован. Во-первых, события !?TM привязаны к каждому дню и расчитаны на то, что игрок Х уже походил, а сейчас ходит игрок У. Не дай бог игрок Х кодит в это время и запускает другие скрипты. Весь код полетит к чёрту. Это аксиома. Далее, ты щёлкнул мышкой, я щёлкнул мышкой, на компах разные события, нужно переслать другим обновлённые переменные. Но как??? Обычно это делал пользователь У, вызвавший событие, а другие компы лишь "слушали". А теперь у всех обрабатываются скрипты. Это простейшие примеры. Я уже не говорю про банальную логику скрипта. Не может быть глобальной логики, когда нельзя застыть на мгновение и провести расчёты. Обычно все игроки ждут, игрок У инициализирует событие и далее царит ЕРМ игрока У. А тут на карте всё происходит реал-тайм, меняются объекты, доходы...Одним словом, извиняюсь, но затея - бред. Псевдопошаговость есть в Discord Times, но там событий в сотни раз меньше и игрок только один. В Героях it is impossible.
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Хмм.._*
сообщение 12 Dec 2008, 20:30 (Сообщение отредактировал Хмм.. - 12 Dec 2008, 20:47)
Сообщение #20







И это только часть. asm, ты еще далек от истины, но все набивают шишки, так что это полезно. Хотя конечно, можешь написать патч для одновременного хода, я, как и все остальные будут этому только рады - успехов!!!!
Go to the top of the pageAdd Nick
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 13 June 2025 - 16:39
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика