Civilization и Total War

 

Имя
Пароль  
Забыли пароль?
Регистрация


CIVru.com / "Совет по концепции" - "Мозговой штурм" / WOFH: Совместная наука страны
Версия для печати . Вверх
Автор Сообщение
akasoft
Участник



Репутация: 1576(???)

# Дата: 5 Окт 2009 16:09:17 Цитата

Ознакомившись с реализацией совместной науки страны в игре wofh надумал изложить своё видение этого дела.

Механизм изучения наук таков: игроки накапливают колбы и периодически с некоторым к-том потерь передают в личную копилку. Если накопили много, передают без потерь, но при этом есть риск, что придёт сосед и ограбит.
По достижении определённого кол-ва колб в копилке случается открытие, перебор колб переходит на следующую науку. Можно задать текущую и след. науки в интерфейсе.
Цена науки слагается из двух частей: каждая наука имеет некоторую базовую стоимость А к которой прибавляется переменная стоимость Б в зависимости от числа изученных наук. Величина Б растёт с каждой изученной наукой, А -- не меняется.


В версии 1.0.12 появилось это самое изучение наук. Реализовано оно так. Игрок создаёт страну, и известные ему науки становятся науками страны. Затем он принимает второго игрока, которому также известны некоторые науки. Начинается процесс объединения наук, при этом колбы идут на это объединение, по завершении которого обоим игрокам станут известны все науки страны, где науки страны - известные на момент вступления науки игроков.
Цена объединения определяется как цена изучения неизвестных наук для каждого с какой-то наценкой.

Пример.
Всего 50 наук, игрок 1 знает науки 1-10,12,15. Игрок 2 знает 1-8, 10, 13, 18. Они объединяются, им надо изучить сумму колб, как если бы игрок 1 изучил самостоятельно науки 13 и 18, а игрок 2 - науки 9,12,15. Каждый со своими переменными наценками. Когда они их накопят, им станут извсестны науки 1-10, 12,13,15,18, и можно выбирать, что будет учить страна дальше.

Проблема в том, что пока не завершено научное объединение, в страну вступить нельзя. По моему, это серьёзный недостаток. Ведь не всегда в страну вступают только ради научного единения. Но я не про это.

Я ожидал другой реализации. Ведь не сложно допустить в страну произвольное количество членов, а единение считать исходя из N человек. Просто при вступлении 3-го во время объединения к сумме колб добавляется по тому же принципу, что и выше, дополнительно кол-во колб, а при досрочном выходе оно отнимается. Тогда объединяться смогут все, а страна не будет "зависать" на слиянии.

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

Интересно, почему сделали попарное слияние "страна""-"новый член", а не множественное? Да, алгоритм чуть сложнее, но ведь ненамного. Он из-за этого не становится невозможным. Всего то пересчитать науки при входе, показать на отдельно форме и ждать команды от мудреца сливаться или нет.
Зато ведь геймплей существенно повышается, как мне думается.

Пока что мне пришло в голову, что в случае множественного слияния возможен сценарий, когда к сливающимся двоим будет заходить третий, сливать колбы, и выходить. Т.о. типа мульты могут вливать ценные колбы "куда надо", и этим злоупотреблять. Но ведь мультов можно и просто грабить. Во вторых, колбы в страну переливаются не полностью, как в одиночном полёте без страны, а с существенными потерями: 68% для лидера, 40% и меньше в зависимости от кол-ва участников. В третьих, можно хранить вклад каждого из участников объединения в колбах, и либо "терять" их при прерывании, либо возвращать участнику обратно. Это даже логично, я про "терять". Типа, штраф, ибо нефиг.

Итого:
1. Почему нет множественного слияния?
2. Почему автоматическое слияние без команды?

Может, я чего-то упустил. Улыбка
Есть у кого идеи? Подмигивание

Kuzmich
Участник



Репутация: 1448(???)
# Дата: 5 Окт 2009 17:19:28 Цитата

Я думаю так:

1. Алгоритм гораздо сложнее и действительно возникает неопределенность при пересчете колб для объединения (и с тем куда и как девать накопленные).
2. А вот тут, сдается мне, вклинивается молодость проекта. Наверняка в каком-то виде реализуют, как только придумают как Подмигивание

akasoft
Участник



Репутация: 1576(???)

# Дата: 5 Окт 2009 19:21:04 Цитата

Kuzmich, приведи пример "сложности", а то я её не вижу. Смущение

Kuzmich
Участник



Репутация: 1448(???)
# Дата: 5 Окт 2009 19:35:47 Цитата

Допустим объединяются 2 человека X и Y. Разница в их науках, допустим 20000.
Вкинули в объединение 15000 колб, решили присоединить третьего человека Z.
Разница в науках между X и Z : 8000 , между Y и Z : 11000.

1) Сколько теперь должно стоить объединение для троих?
2) Как быть с уже вкинутыми колбами?

Да, вышеперечисленные вопросы разрешимы. Но несколькими вариантами и выбранное решение наверняка побудит новый виток споров вокруг Подмигивание

kaizer
Судья



Репутация: 1790(???)
# Дата: 5 Окт 2009 19:46:39 Цитата

Незнаю в рамках их проекта, я бы реализовал научные премии на науку, которую уже знает кто-то из страны (как в циве), а то вступил новичек и начинается объединение по новой, причемвсе эти бонусы надо запоминать и потом если его выгонят перекидывать в штрафы.

akasoft
Участник



Репутация: 1576(???)

# Дата: 5 Окт 2009 21:07:50 Цитата

Kuzmich, всё очень легко считается. Приведу пример.

те же 50 наук
игрок 1 знает науки 1-10,12,15. Игрок 2 знает 1-8, 10, 13, 18. Объединяются. Для этого им надо изучить колбовый эквивален наук 13 и 18 (1), 9,12,15 (2). Страна после объединения будет владеть 1-10, 12,13,15,18. Пошли копить колбы на объединение, пусть N колб.

Теперь к ним цепляется игрок 3, знающий 1-9, 12-14. Страна из трёх игроков будет владеть 1-10,12-15, 18. У первых двух недостача знания 14, у третьего - 10,15,18. Плюсуем это к общей корзине и всё.
Абсолютно определённые и конечные расчёты.

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

Ктулху
Участник


Репутация: 889(???)
# Дата: 6 Окт 2009 10:52:01 Цитата

1. Почему нет множественного слияния?
слияние это симмитричная бинарная операция

2. Почему автоматическое слияние без команды?
безралично. какое вообще все это имеет отношение к цивилизации?

akasoft
Участник



Репутация: 1576(???)

# Дата: 6 Окт 2009 12:00:02 Цитата

Ктулху:слияние это симмитричная бинарная операция

И что это объясняет? Выше приводил пример для 3-х игроков. Для N игроков будет тоже конечная операция, а учитывая начальные условия (конечность наук и игроков в стране), то и вполне вычислимая за разумное время, притом однозначно.

Kuzmich
Участник



Репутация: 1448(???)
# Дата: 6 Окт 2009 19:47:56 Цитата

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

Ктулху
Участник


Репутация: 889(???)
# Дата: 6 Окт 2009 21:55:12 Поправил: Ктулху Цитата

akasoft:И что это объясняет? Выше приводил пример для 3-х игроков. Для N игроков будет тоже конечная операция, а учитывая начальные условия (конечность наук и игроков в стране), то и вполне вычислимая за разумное время, притом однозначно.
для меня видна аналогия с разностью (ваше слияние оказывается не симметрично: к "стране" присоединяется "игрок" ).

раз определена для двух аргументов и последовательно считается для 2 аругментов "слева направо".
т.е. а - в - с = ((а - в) - с) или (-, (-, а, в,), с) в польской нотации.

то что ты предлагаешь это сразу алгоритм для N агрументов.

т.е. а - в - с превратится в что-то наподобие operator-(3, а, в, с). а для N аргументов будет operator-(N, X1, X2, ..., Xn);

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

возьмем для примера N игроков и их надо всех объединить в одну страну:

1) для этого потребуется N вызов функции объединения страны с игроком. (до первого вызова страна будет "пустой". т.е. без игроков)

2) для этого потребуется 1 вызов мегафункции объединения N игроков вместе. в этой функции придется в том числе сделать N! операций для оценки разности колб всех со всеми.[/b]

akasoft
Участник



Репутация: 1576(???)

# Дата: 7 Окт 2009 10:13:36 Цитата

Kuzmich, что делать с колбами -- это уже элемент баланса игры и геймплея. Технической проблемой это не является.

Ктулху, я попробую пояснить, почему не вижу "мегафункций" и "мегазатрат" по-другому, на примере множеств.

Итак, имеем N игроков на сервере, где N -- сколь угодно большое. Имеем гораздо меньшее кол-во наук, притом конечное. Например, 50. Имеем страну на M участников, где M определяется геймплеем, не более N и тоже конечное, поскольку не так-то просто собрать всех в одну страну. Пусть ограничение на кол-во участников == 20.

Игрок один знает множество наук [1-10, 12, 15], игрок 2 [1-8, 10, 13, 18], игрок 3 [1-9, 12-14]. Отображение множеств в БД опускаем, есть много способов это сделать.

игрок 1 создаёт страну, возникает наука страны, множество которой совпадает с создателем, т.е. [1-10, 12, 15]. Цена объединения создателя со своей страной == 0.

Цепляется игрок 1, происходит вычисление множества общей науки после объединения и кол-ва колб на объединение. Общая наука - это сложение множеств игрока 1 и игрока 2, т.е. [1-10, 12, 15] + [1-8, 10, 13, 18] == [1-10, 12, 13, 15, 18]. Цена объединения [1-10, 12, 13, 15, 18] - [игрок 1] умножить на коэффициенты открытия плюс [1-10, 12, 13, 15, 18] - [игрок 2] умножить на к-ты открытия. Цена объединения считается один раз при активации объединения, запоминается и затем идёт накапливание, по накоплению множества игроков 1 и 2 обновляются.

Теперь что же произойдёт, если при незаконченном объединении прицепится ещё некий игрок 3. Будет произведён пересчёт. Пересчитается множество наук страны после объединения путём сложения множеств [1-10, 12, 15] + [1-8, 10, 13, 18] + [1-9, 12-14]. Затем от полученного отнимается множество каждого игрока и считается новая цена объединения. Это конечная и одноразовая операция. И относительно дешёвая.

А если кто отцепится в процессе? Опять перерасчёт один раз по вышеприведённому алгоритму. Конечный, разовый. Можно провести для M игроков. Опять же разово.

Всё на уровне операций над множествами над линейным массивом игроков и одной спецсущностью - страной. Не вижу сложностей на уровне математики и логики.

akasoft
Участник



Репутация: 1576(???)

# Дата: 7 Окт 2009 10:31:25 Цитата

М.б. это не очевидно, но в ситуации, когда в стране уже есть типа А игроков (например, 3), и к ним цепляются ещё двое, есть множество наук страны (оно же равно множеству игроков-участников), и отдельные множества каждого из присоединяющихся. Алгоритм тот же.

В геймплее же возникает возможность объединения, возможность выбора, куда тратить колбы -- на именно объединение, или на науку страны для тех, кто в стране; или на индивидуальную науку, для тех, кто ещё не в стране.

Ктулху
Участник


Репутация: 889(???)
# Дата: 7 Окт 2009 13:27:22 Цитата

что будет если будут объединятся игроки, чьи знание образуют полное множество?

З.Ы. как все это относится к цивилизации? или данный подфорум предназначен для выплескивания потока сознания?

Kuzmich
Участник



Репутация: 1448(???)
# Дата: 8 Окт 2009 12:31:07 Цитата

Ктулху:З.Ы. как все это относится к цивилизации?

Смотри первый пост:
akasoft:Ознакомившись с реализацией совместной науки страны в игре wofh надумал изложить своё видение этого дела.

akasoft
Участник



Репутация: 1576(???)

# Дата: 8 Окт 2009 12:52:24 Цитата

Ктулху:что будет если будут объединятся игроки, чьи знание образуют полное множество?

По завершении объединения? Будут знать всё дерево наук. В его начале? В текущей реализации им придётся изучить все неизвестные им науки. Улыбка Этот вопрос правильный. Одобрение

Но это, т.с. в вакууме. В реальности же изучить разное множество наук невозможно, ибо они увязаны в дерево и зависят др. от др. Нельзя выйти на "верхние" науки не изучив набора "нижних". Да и ущерб развитию будет существенный, будет отставание.

Ктулху:З.Ы. как все это относится к цивилизации? или данный подфорум предназначен для выплескивания потока сознания?

Если ты не в курсе, что такое WOFH, пойди посмотри. Это браузерка с элементами цивилизации.
А в этом разделе у нас давно ничего не выплёскивалось. Мозги ржавеют, извилины выпрямляются. Улыбка

Yorick
Реал-цивер


Репутация: 997(???)
# Дата: 11 Окт 2009 19:19:49 Цитата

Вряд ли это тема для "Совета по конецпции", ПКМ в таком виде - я бы понял, если бы обсуждалось, что бы стоило взять ИЗ игры. А так - это скорее в "Другие цивилизации".

akasoft
Участник



Репутация: 1576(???)

# Дата: 12 Окт 2009 14:11:04 Цитата

Yorick, почему это оффтопик? Мне вот интересен механизм и его реализация, где же мне это обсуждать, как не здесь? Улыбка

Версия для печати . Вверх

ОСТАВЛЯТЬ СООБЩЕНИЯ МОГУТ ТОЛЬКО ЗАРЕГИСТРИРОВАННЫЕ ПОЛЬЗОВАТЕЛИ!

Администрация форума: editors@civru.com
Rambler's Top100
XML [?]