Объявления

Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

Проект "Пишем сами Героев 2"

Не запускается игра? Проблемы со звуком? Где, в конце концов, взять игру, скачать патчи, приложения и карты? Как установить все это? Все проблемы обсуждаем в этом разделе
offlineQwerty  
Подмастерье
Подмастерье
 
Сообщения: 198
Зарегистрирован: 20 янв 2012, 12:04
Пол: Не указан
Награды: 3
Наградной знак (3)
Поблагодарили: 67 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение Qwerty » 25 фев 2013, 08:33

AlexSpl писал(а):

Положение и тип препятствий ... определяются непосредственно перед боем.

Саша, я полагаю, это то единственное уникальное исключение. которое подтверждает правило. Правило гласит: "AlexSpl всегда прав". Я считаю, что хоть перед боем, хоть в первый день игры хоть в 101 положение и тип препятствий будет одинаковым. То есть они не определяются непосредственно перед боем. Однако здесь мы вторгаемся в некоторые аспекты, которые не хотелось бы освещать публично в связи с опасностью снижения интереса ко вторым героям. Я бы предпочёл обойти молчанием эту тему, наверное зря все эти посты оставил, у меня тут вариант Алапина и вариант двух коней к каким-то нестандартным позициям пришли ...
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение AlexSpl » 25 фев 2013, 10:00

Цитата:
Я считаю, что хоть перед боем, хоть в первый день игры хоть в 101 положение и тип препятствий будет одинаковым. То есть они не определяются непосредственно перед боем.

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

offlineАватара пользователя
Владимир  
Эксперт
Эксперт
 
Сообщения: 1057
Зарегистрирован: 30 окт 2012, 18:37
Пол: Не указан
Награды: 3
Высшая медаль (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (1)
Поблагодарили: 638 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение Владимир » 28 фев 2013, 06:50

AlexSpl писал(а):

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

AlexSpl писал(а):

Для двойки формулу появления грейда не искал, но, чтобы иметь представление, о чём идет речь, можете глянуть на форумулу для тройки...

Для двойки, это формула вида F(x+y,MonsterIndex). то есть диагональные полосы. "/" Только сами зависимости от аргументов очень странные. Хоть напрямую их забивай (займёт 756 байт памяти)
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение AlexSpl » 28 фев 2013, 07:57

Цитата:
Для двойки, это формула вида F(x+y,MonsterIndex). то есть диагональные полосы. "/" Только сами зависимости от аргументов очень странные. Хоть напрямую их забивай (займёт 756 байт памяти)

Получается, что конфигурация препятствий зависит от типа монстров, на которых мы нападаем :shock: Т.е. если на одну и ту же клетку поставить разных монстров, то и препятствия в этих двух случаях будут разными? А если мы нападаем на героя или осаждаем замок, какой MonsterIndex берётся?

Ещё интересна зависимость от суммы координат. Выходит, если поставить, например, крестьян на клетки (10; 2), (9; 3); (8; 4), (7; 5), (6; 6); (5; 7); (4; 8); (3; 9) и (2; 10), то при нападении на каждый такой отряд будут генерироваться абсолютно одинаковые препятствия? Как-то совсем неинтуитивно.

UPD || Ага, речь идёт о грейде. Первый вопрос снимается ;) А второй переиначу так: получается, что отряды с перечисленными выше координатами либо содержат грейженый стек все одновременно, либо все одновременно - нет? Т.е. Вы уверены, что в условии появления грейда фигурирует сумма координат, а не, скажем, их линейная комбинация с коэффициентами, отличными от 1? || UPD

P.S. Хочу побыть тестером :) Дайте мне формулу появления грейда в двойке :ugeek: Добавлю её в LMOracle :)
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение AlexSpl » 01 мар 2013, 10:08

Вчера потестил минут десять. По крайней мере, несколько верхних отрядов на дополнительной диагонали (/) не имели грейженого стека, также не было грейда и на диагонали на одну клетку выше, а вот на следующей диагонали, которая на 2 клетки выше дополнительной, все отряды имели грейженый стек.

Для тройки на карте 36x36 (верхний уровень) формула даёт вот такую картинку грейдов (1 - грейд присутствует, 0 - нет):

Код: Выделить всё
111000000010000111111111111000000000
000000000001111111111110000000000011
000000001111111111100000000000011111
000011110111111100010000000111001111
111001111111001110000000100011111110
011111110011100000001000111111111111
111111111000000000000111111111110000
111111000000000001111111111110000000
110000100000001110111111100011000000
001000000011101111111100110000000110
000000110001111111011100000001000011
000000011111111111100000000000111111
000011111111111000000000000111111111
111111111111000000000001111011111110
011111110001000000011100111111100111
111100111000000010001111111011110000
111110000000000001111111111100000000
110000000000011111111111100000000000
000000000111111111111000010000000111
000000111011111110001100000001100111
001100011111110111000000010000111111
000111111101111000000000001111111111
111111111110000000000001111111111100
111111100000000000011111111111100010
111100010000000111001111111001100000
000110000000100011111110111100000000
100000001000011111111111000000000000
000000000111111111111000000000001111
000001111111111110000000000011110111
001110111111100011000000011001111111
100111111100110000000110001111111011
111111011110000000000011111111111100
111111100000000000111111111111000000
111000000000000111111111110000100000
000000000001111011111110001000000011
100000001100111111100111000000010001


Т.е. можно наблюдать диагональное заполнение с некоторым элементом случайности. Интересно, в двойке полосы единиц сплошные или есть "разрывы" кое-где?

* * *
Так, наверное, чётче видно ("O" - грейд).

Код: Выделить всё
OOO-------O----OOOOOOOOOOOO---------
-----------OOOOOOOOOOOO-----------OO
--------OOOOOOOOOOO------------OOOOO
----OOOO-OOOOOOO---O-------OOO--OOOO
OOO--OOOOOOO--OOO-------O---OOOOOOO-
-OOOOOOO--OOO-------O---OOOOOOOOOOOO
OOOOOOOOO------------OOOOOOOOOOO----
OOOOOO-----------OOOOOOOOOOOO-------
OO----O-------OOO-OOOOOOO---OO------
--O-------OOO-OOOOOOOO--OO-------OO-
------OO---OOOOOOO-OOO-------O----OO
-------OOOOOOOOOOOO-----------OOOOOO
----OOOOOOOOOOO------------OOOOOOOOO
OOOOOOOOOOOO-----------OOOO-OOOOOOO-
-OOOOOOO---O-------OOO--OOOOOOO--OOO
OOOO--OOO-------O---OOOOOOO-OOOO----
OOOOO------------OOOOOOOOOOO--------
OO-----------OOOOOOOOOOOO-----------
---------OOOOOOOOOOOO----O-------OOO
------OOO-OOOOOOO---OO-------OO--OOO
--OO---OOOOOOO-OOO-------O----OOOOOO
---OOOOOOO-OOOO-----------OOOOOOOOOO
OOOOOOOOOOO------------OOOOOOOOOOO--
OOOOOOO------------OOOOOOOOOOOO---O-
OOOO---O-------OOO--OOOOOOO--OO-----
---OO-------O---OOOOOOO-OOOO--------
O-------O----OOOOOOOOOOO------------
---------OOOOOOOOOOOO-----------OOOO
-----OOOOOOOOOOOO-----------OOOO-OOO
--OOO-OOOOOOO---OO-------OO--OOOOOOO
O--OOOOOOO--OO-------OO---OOOOOOO-OO
OOOOOO-OOOO-----------OOOOOOOOOOOO--
OOOOOOO-----------OOOOOOOOOOOO------
OOO------------OOOOOOOOOOO----O-----
-----------OOOO-OOOOOOO---O-------OO
O-------OO--OOOOOOO--OOO-------O---O


P.S. Этому форуму не хватает моноширинного шрифта.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение AlexSpl » 06 мар 2013, 19:51

Цитата:
Для двойки, это формула вида F(x+y,MonsterIndex). то есть диагональные полосы. "/" Только сами зависимости от аргументов очень странные. Хоть напрямую их забивай (займёт 756 байт памяти)

Условие появления грейженого стека в двойке довольно сложное. Проще всего его запрограммировать, чем выразить аналитически :D Скажу только, что это условие вида F(x + y) mod 101 < 50. Если это условие выполняется, грейд есть, иначе - нет. Проще поступить так: создать пустую тестовую карту и расставить на ней любых монстров, у которых есть грейд, вдоль главной диагонали. Получится ровно 144 отряда. Затем проверить каждый такой отряд на наличие грейда. Если в каком-либо отряде обнаружится грейженый стек, то он также будет и у всех других отрядов, стоящих на той же дополнительной диагонали, что и тестируемый отряд. Затем расставить отряды на диагонали выше или ниже главной (получится 144 - 1 = 143 отряда) и повторить описанную выше процедуру. Таким образом, на хранение "карты грейдов" потребуется всего лишь

ceil((144 + 143) / 8) = 36 байт.

Если не хочется возиться с упаковкой данных, то потребуется булевый массив размером 144 + 143 = 287 байт при условии, что на логический тип отводится 1 байт.
Последний раз редактировалось AlexSpl 06 мар 2013, 21:45, всего редактировалось 4 раз(а).
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение AlexSpl » 06 мар 2013, 20:39

Вот такую картинку грейдов даёт условие F(x + y) mod 101 < 50 для карты 36 x 36:

Код: Выделить всё
-OO-----OO----OOO-O--OO-OO--OOOOO--O
OO-----OO----OOO-O--OO-OO--OOOOO--O-
O-----OO----OOO-O--OO-OO--OOOOO--O-O
-----OO----OOO-O--OO-OO--OOOOO--O-OO
----OO----OOO-O--OO-OO--OOOOO--O-OO-
---OO----OOO-O--OO-OO--OOOOO--O-OO--
--OO----OOO-O--OO-OO--OOOOO--O-OO--O
-OO----OOO-O--OO-OO--OOOOO--O-OO--O-
OO----OOO-O--OO-OO--OOOOO--O-OO--O--
O----OOO-O--OO-OO--OOOOO--O-OO--O--O
----OOO-O--OO-OO--OOOOO--O-OO--O--OO
---OOO-O--OO-OO--OOOOO--O-OO--O--OO-
--OOO-O--OO-OO--OOOOO--O-OO--O--OO--
-OOO-O--OO-OO--OOOOO--O-OO--O--OO--O
OOO-O--OO-OO--OOOOO--O-OO--O--OO--O-
OO-O--OO-OO--OOOOO--O-OO--O--OO--O--
O-O--OO-OO--OOOOO--O-OO--O--OO--O--O
-O--OO-OO--OOOOO--O-OO--O--OO--O--OO
O--OO-OO--OOOOO--O-OO--O--OO--O--OOO
--OO-OO--OOOOO--O-OO--O--OO--O--OOOO
-OO-OO--OOOOO--O-OO--O--OO--O--OOOO-
OO-OO--OOOOO--O-OO--O--OO--O--OOOO--
O-OO--OOOOO--O-OO--O--OO--O--OOOO---
-OO--OOOOO--O-OO--O--OO--O--OOOO---O
OO--OOOOO--O-OO--O--OO--O--OOOO---OO
O--OOOOO--O-OO--O--OO--O--OOOO---OOO
--OOOOO--O-OO--O--OO--O--OOOO---OOOO
-OOOOO--O-OO--O--OO--O--OOOO---OOOO-
OOOOO--O-OO--O--OO--O--OOOO---OOOO--
OOOO--O-OO--O--OO--O--OOOO---OOOO---
OOO--O-OO--O--OO--O--OOOO---OOOO---O
OO--O-OO--O--OO--O--OOOO---OOOO---O-
O--O-OO--O--OO--O--OOOO---OOOO---O-O
--O-OO--O--OO--O--OOOO---OOOO---O-OO
-O-OO--O--OO--O--OOOO---OOOO---O-OO-
O-OO--O--OO--O--OOOO---OOOO---O-OO--


Хотел сразу для карты 144 x 144 запостить, но не вмещается по ширине.

А вот, собственно, то, о чём я писал в сообщении выше - главная диагональ для карты 144 x 144, разбитая на байты:

D[0] = 01001001
D[1] = 11011011
D[2] = 10010010
D[3] = 10110110
D[4] = 00100100
D[5] = 11101001
D[6] = 11001011
D[7] = 00011010
D[8] = 00010110
D[9] = 11110100
D[10] = 10100101
D[11] = 10001001
D[12] = 00011011
D[13] = 01010010
D[14] = 01010110
D[15] = 11000100
D[16] = 10001101
D[17] = 10101001

Ещё столько же байт понадобится для хранения диагонали, расположенной выше или ниже (как угодно) главной:

D[18] = 10001001
D[19] = 00101011
D[20] = 01101010
D[21] = 01100110
D[22] = 11000100
D[23] = 10011101
D[24] = 10111001
D[25] = 00100011
D[26] = 01101010
D[27] = 01001110
D[28] = 11011100
D[29] = 10010001
D[30] = 10110111
D[31] = 00101110
D[32] = 01101010
D[33] = 11001000
D[34] = 10010011
D[35] = 1001011x

Последний бит оказывается лишним. Его можно использовать на своё усмотрение ;) Флаг грейда для клетки с координатами (X, Y) будет находиться в элементе массива D[(X + Y) shr 4] для чётной суммы X + Y, D[18 + (X + Y - 1) shr 4] - для нечётной. Выделить нужный бит можно, например, с помощью операций битового сдвига.

Таким образом, уже после первого боя с нейтралами можно получить некоторое представление о том, в каких отрядах можно ожидать грейженый стек. Для этого достаточно мысленно провести диагональ (/) через клетку, на которой находился побеждённый отряд. Если в этом отряде присутствовал грейженый стек, то он будет присутствовать также и во всех отрядах, расположенных на этой диагонали. Отмечу также, что наличие грейженого стека увеличивает мораль нейтралов с 0 до +1 :geek:
Вернуться к началу

offlineQwerty  
Подмастерье
Подмастерье
 
Сообщения: 198
Зарегистрирован: 20 янв 2012, 12:04
Пол: Не указан
Награды: 3
Наградной знак (3)
Поблагодарили: 67 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение Qwerty » 07 мар 2013, 06:23

AlexSpl писал(а):

Отмечу также, что наличие грейженого стека увеличивает мораль нейтралов с 0 до +1 :geek:


Стоп. С этого момента поподробнее. Если речь идёт о разгадке загадки Qwerty, то это один разговор. Если же о чём-то ином, то всё же надо уточнить.
Вернуться к началу

offlineQwerty  
Подмастерье
Подмастерье
 
Сообщения: 198
Зарегистрирован: 20 янв 2012, 12:04
Пол: Не указан
Награды: 3
Наградной знак (3)
Поблагодарили: 67 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение Qwerty » 07 мар 2013, 06:25

Перечитал ещё раз твою фразу и понял, что ты разгадал загадку Qwerty, которая была задана лет 5 назад. Однако формулировка не совсем корректна, её надо подправить:)))
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: Проект "Пишем сами Героев 2"

Сообщение AlexSpl » 07 мар 2013, 07:48

Цитата:
Перечитал ещё раз твою фразу и понял, что ты разгадал загадку Qwerty, которая была задана лет 5 назад. Однако формулировка не совсем корректна, её надо подправить:)))

Она случайно разгадалась :oops: Дело в том, что этот не очень широко известный факт мы уже обсуждали с DR28 раньше, но не было повода его опубликовать где-либо. Как звучала загадка в оригинале?

По поводу формулировки. Понятно, что нежить +1 Морали иметь не будет. Или речь о другом?
Вернуться к началу

Пред.След.

Вернуться в Техническая часть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1