Скопировал показавшиеся мне разумными мысли с форума (по сути собрал вместе).
//Оглавление
1)Цель проекта
2)Общее видение проекта
3)Соображения по поваду реализации
4)Всякие замечания
5) Аналоги и замечания по повадау аналогов
6) Технические детали
/// loknalori
1) Играбильная графическая Оффлайн-стратегия. (о степени графичности – см. окончание пункта 3)
2) Общее видение проекта
Наиболее интересны те игры, в которых человек играет против человека. А с учетом не очень большого количества времени у играющего (мы же ориентируемся на взрослого, работающего геймера ) подходят только Action и offline-стратегии. С Action – все понятно, куда тягатьсяс Quake. Остаются offline – стратегии. Вот о них-то я и говорю. Представьте себе игровой мир, состоящий из партий. Запустили партию – мир ожил, обьекты начали развиваться (воевать, торговать, расти и т.п.) по законам игры и в соответствии с команами плеера. Плеер отдал команды и уехал работать, а обьекты живут дальше. Приехал затраханный домой, отдал новые команды и пошел ужинать. Т.е. Войска воюют, селения строятся, корабли двигаются согласно твоим указаниям, но без твоего вмешательства и не требуют постоянного контроля. Ты можешь просиживать круглыми сутками за монитором, а можешь отдавать команды два раза в сутки, при этом качество управления игрой и у первого и у второго будет примерно одинаковым. Во многих стратегиях (например warcraft III) побеждает не тот кто лучше понимает что будет происходить, а тот кто лучше контролирует войска. Это, может и правильно, но не справедливо. Ну не имею я возможности просиживать сутками за играми, значит и играть я «круто» не смогу. Т.е. Игра должна быть подобием «войны вирусов» с возможностью контролирования развития (в рамках изначально выбранных параметров). Т.е. выбрал рассу тупых, но быстро размножающихся индивидов – получил огромный бонус, когда требуется пушечное мясо, но проиграл в сфере научных разработок. и т.п. Текстовые игрушки – не наш путь, ибо аскетизм вещь хорошая, но не всегда распространенная и абсолютно не обязательная.
Минус – очень долгие партии (месяц-два), плюс – игра требует работы мозгами, не требует скилл-навыков (а-ля проф. Quaker), не съедает большого количества реального времени, обладает «эффектом тамагочи».
В принципе, эти все слова можно сказать про игру Real4x. В принципе, это та игра, которая могла бы меня устроить, но она почила еще не успев, как следует, родиться. Это еще одна очень хорошая Российская задумка которая, так и осталась только хорошей задумкой. Набрав в google можете посмотреть ее. Истинные фанаты этой игрушки, вроде как, и сейчас играются, но это уже похоже на дворовый футбол.
По поводу графики – игра должна строиться на граф. интерфейсе с вводом некоторых текстовых данных. В принципе, реч о 3D не идет, так как в подобного рода играх наглядность (а ей, кстати, тестовые игрушки не обладают) превыше «красоты».
3) Сервер, в котором живет игровой мир. Скорее всего сервер работающий по принципу базы данных, т.е. каждый «тик» идет пересчет сотояний системы с сохранием некоторого предидущего устойчивого состояния.
Клиенты, которые интерпретируют часть текущего состояния сервера в графический вид (т.е. нечто подобное векторной графики, по коорднатм рисуются трассы пути, размеры поля видимости), другую часть – в текстовый вид (колличество матросов на корабле, расстояние до ближайшей планеты). Почему часть? Потому что сервер отсылает только те данные которые реально видит игрок, то что его пока не касается он не видит.
Минимизация трафика, отсылка разностной схемы состояний.
Надо помнить о том что баланс расс (игроков, классов) штука редко-редко угадываемая с первого раза, поэтому 100% будт апдейты (а-ля Blizzard)
4) Сценарий – абсолютно обсуждаемо, например космические войны, например войны морских держав, например... да много всего может быть. Схема распространения – freeware.
5)
http://ds.rambler.ru
-)Могу ошибиться, но это игровые миры. Я говорю о игровых мирах-партиях. Т.е. тут цель – процесс игры (быть сильнее всех в какой-то момент), там нужно достичь некоторого результата в момент финиша партии (что считать финишем – отдельный разговор).
-)Параметры рассы фиксированы. Да их несколько, но я не могу подобрать для себя баланс возможностей. МОЯ расса должна быть УНИКАЛЬНА (если я, конечно, не выберу стандарт)
-)Игровое поле тут разбито на малое колличество квадратов и перехватить войска в движении не возможно. Хочется – чтобы поле состояло из очень большого количества квадратов (с тем чтобы была для возможность маневра войсками) и лишь некоторые из них были пригодны для размещения баз (планет, зданий). Т.е. ты с планеты 1 на планету 2 отправил корабль по хитрой траекторри чтоб его было сложно перехватить, к кому отправил увидел на радаре (матрос на мачте разглядел), отправил перехватчик, и они летят-летят друг к другу.... Вернее колличество квадратов – фиксировано, но для сервера, пользователь должен иметь илюзию бесконечно точного поля.
Резюме: эта игра одного жанра с тем что я хочу, но совсем не то что хочу.
4) На счет ваших предложений — принципиально согласен, а детали в моей бумаге. Единственно 3 очень важных но (прошу откоментировать):
-) Игра — стратегия. Ни каких RPG. Иначе утонем. Если очень-очень хочется RPG — вводим понятие героев, которые могут хапать левел, но лучше не надо, иначе значительная часть игры будет уходить на контроль гроя (вспомним варкрафт)
-) Игра — реалтайм стратегия. Просто очень долгий риалтайм. В партии растянутой на несколько недель НЕОЖИДАННЫХ битв быть не может (сам проверял, факт), это раз, два — умеешь писать программы -пиши AI и наблюдай, не умеешь, контроль руками. Игра слишком медленая? Запусти сервер чтоб состояние там считалось не раз в минуту а раз в 2 секунды, вот и будет полный реалтайм.
-) Игра ориентирована на партии. Запустили партию, в процессе партии поигрались, пообкатывали скрипты (или отработали навыки руками), разработчики поняли что им надо проапдейтить и т.д. Запустили новую партию, и снова все равны (на старте) и начинается мясо с учетом предидущих игр. "Ты у меня выиграл? Ну, ужо погоди, у меня!"
2)
Выношу на обсуждение Игровой Мир
ЗЫ Это не описание игры, это в двух словах о мире, чтоб упорядочить фантазии.
Стратегию можно делать и про Ген с Чебурашками, но надо нарисовать границы фантазии. Вначале хотел придложить про космос, но слишком избито, надо что-то оригинальнее.
Островные государства. Есть поверхность моря, которая занимает БОЛЬШУЮ часть пространства. Не менее 95 %. Суша делится на 2 части — острова-для-жизни, где есть заводы, бараки, фермы, верфи и т.п. И острова-для-ресурсов, на которых можно только добывать ресурсы или, например, строить форты. Ресурсы, также, добываются из моря (рыба, удобрения и тп). Люди размножаются, заселяют новые острова, занимаются наукой и тп. Цунами, состояние моря на момент битвы, видимость (тумааная часть окена), ну и море факторов влияющих на игру. В результате мы получаем мир, который
-) Оригинальный (таких стратегий на слуху что-то не помню)
-) требует серьезного экономического AI (или будте любезны, руками в цикле), туда сюда рыбу, воду и тп. возить
-) С достаточно локализоваными битвами Битва — точка в море, ни каких расползаний по квадрату
-) С возможностью варировать наземные битвы (будет у нас время — сделаем чтоб можно контролировать часть острова, нет — остров имеет единое состояние, либо твой, либо нет)
-) С огромным пространством для маневра. Эх, какое море. Да и острова можно размещать по разному — сферами альянсами — случайно и тп.
/// почитайте, там было за и против. Начиная с этого сообщения
http://www.rsdn.ru/Forum/Message.aspx?mid=1522740&only=1Автор: loknalori
Дата: 05.12.05
/// Бушин Илья
4) Самым первым пунктом необходимо продумать как это ни странно не техническую часть, а финансовую...
Дело в следующем. На своем веку насмотрелся на подобные игровые стартапы — просто море! Большинство из них по тем или иным причинам приказали долго жить... А все почему? Потому, что для того чтобы подобный мир жил и был интересен игрокам его нужно постоянно развивать, совершенствовать, придумывать новые квесты и т.д. В конце концов, такую игруху в том или ином виде необходимо модерировать/координировать. Иначе, если всеми этими вещами не заниматься, то получится очередной "дворовый футбол". Почему подобные вещи нельзя отдавать на откуп энтузиастам игры? Энтузиазм рано или поздно пропадает, появляются новые интересы и увлечения. Расчитывать на постоянный приток новых энтузиастов тоже нельзя... Найти профессионала в какой-либо области, ктороый будет "гореть" делом и идеей крайне сложно. Знаю по своему опыту... Непрофессионалов много. А это значит отдать какой-либо фронт работы на месяц-другой (пока не наберется необходимого опыта) в руки непрофессионала. Что в результате грозит разбеганием аудитории и вырождением проекта в тот же самый "дворовый".
Выход я вижу один. Сделать проект в том или ином виде самоокупаемым и самофинансируемым... Соответственно вставляем в план еще один пункт: "Статьи и объемы доходов и расходов".
// мой ответ —
http://www.rsdn.ru/Forum/Message.aspx?mid=1507857&only=1Автор: loknalori
Дата: 27.11.05
. Думаю не очень актуально чтобы верстать сюда...
/// orangy rsdn
(думаю — оффтоп, но ознакомится можно тут —
http://www.rsdn.ru/Forum/Message.aspx?mid=1510474&only=1Автор: orangy
Дата: 29.11.05
/// Macedonian +++!!!
Очень разумно
3) Есть предложение по поводу управления отдельными юнитами и их группами ("микро" в терминах Warcraft III). Была такая игра Colobot. Суть в том, что в игре используется свой скриптовый язык, которым описывается "микро".
Таким образом, можно получить довольно сложное поведение юнитов без хитрых манипуляций мышью. Причем алгоритм поведения вражеских юнитов можно сделать открытым, либо доступным после какого-либо события (уничтожение, взятие в плен, денежное вознаграждение и т.д.). "Макро", т.е. постройку зданий, юнитов, баз можно описать на том же самом языке. Например, по достижению Х золота построить N новых юнитов, или при популяции более N юнитов, небольших потерях и наличии X золота Y дерева построить новое здание и т.д. В результате значение быстроты принятия решений отодвигается еще дальше и мы приближаемся к заветной цели
Если сохранять предыдущие состояния, то игрок может "отмотать назад" историю игры до какого-либо интересного ему события (например, сражения) и оценить работу своих и вражеских алгоритмов на практике. Опять же попытка уменьшить значение сиюминутного присутствия игрока.
/// еще один пост
Предлагаю дополнить твою идею программирования поведения юнитов до программирования самих юнитов, только тут придется решать вопрос с балансом...
Есть идея по этому поводу. Можно (в принципе, без этого никак ) ввести набор обязательных характеристик юнита (скорость перемещения, дальность стрельбы, величина урона, хитпоинты, время постройки и т.д.) и каждая единица такой характеристики будет стоить определенных ресурсов. Суть в том, что игрок собирает юнитов с заданными им характеристиками сам. Пример (от лица одного из игроков):
Начало игры, Х ед. ресурса.
Решил создавать юнитов с высокой дальнобойностью и низкими HP. Назначенные характеристики обойдутся в 100 ед. за штуку, попросил главный завод изготовить 5 штук таких (итого 500 ед.). Затем понадобилось несколько юнитов с высокими HP, оказалось, что данные характеристики не вкладываются в бюджет (250 ед. за штуку), решил пожертвовать скоростью перемещения и дальностью стрельбы. В итоге получилось 150 ед. за юнит. И т.д.
В итоге — минимум проблем с балансом, т.к. у каждого игрока изначально одно и то же количество ресурса. Зависимось цены от величины характеристики можно сделать нелинейной, дабы избежать появления юнитов с одной характеристикой, установленной в максимально большое значение, а остальными — в минимальное (дисбаланс ). Проблемы с внешним видом таких конструкторов, думаю, решатся без лишних проблем.
Еще есть идея внести элемент пошаговости, т.е. всю партию (думаю, что игра в виде отдельных партий (1х1, 2х2, NxN) — оптимальный вариант) разбить на отдельные элементы (ходы). После того, как каждый сделал по ходу (если ходы делаются одновременно — снова убиваем дисбаланс), либо после каждого хода (ходы делаются по очереди — тот, кто ходит первым, получает преимущество ) происходят различные события, являющиеся результатом ходов соперников, на которые (на события) уже не повлиять (ход сделан), т.е. кто-то кого-то убил, переместился, выиграл партию и т.д. Следующий ход начинается с анализа произошедших событий и новой сложившейся ситуации. Изначально можно обойтись минимумом графики (важна лишь конечная ситуация после хода), затем уже добавить ролики событий (в том числе ScreenSaver'ы ). Определять продолжительность между ходами можно используя время, плюс можно поставить лимит на использование ресурсов за один ход.
Используя одновременные ходы + юниты-конструкторы добиваемся приблизительного (полного? ) стратегического баланса.
//// tripolox
А что если взяьт за основу техническую реализацию из .NET Terrarium, т.е. написание кода для игры, но расшитрить ее до уровня "Колоний", т.е. пользователю выделяется некая колония например в космосе, с некоторым количеством некоторых ресурсов (у всех разные) и в зависимости от ресурсов он потихонечьку равивает технологии своей колонии (программирует например новые типы вооружения или новых андроиов) , колония может добывать ресурсы, может их продавать другим колониям или например тратить на постройку космических кораблей для торговли или войны, торговать опять же можно произведенными на своей планете своими технологиями... т.е. запрограммировать "мегалазер", запрораммировать завод для производства "мегалазеров", запрограммировть торговый корабль для доставки "мегалазеров" в другие колонии дать команды куда продавать, куда нет и по какой цене... собственно колония развивается и зарабатывает или не зарабатывает деньги... соответственно на деньги можно купить флот истребителей, установить на них свои мегалазеры и завоевать всю вселенную =)
////Другой пост
L>В принципе, тоже, вариант. Но только надо отдавать себе отчет, что это путь к игрушке для программистов.
Не согласен, т.к. если всё правильно сделать....
Сразу говорю речь о многопользовательской он-лайн игре, значит идея том, чтобы дать возможность игрокам создавать свои игровые объекты, но при этом люди, далекие от программирования смогут играть в игру пользуясь достижениями (программками) других игроков...
Фактически должен получиться саморазвивающийся мир, в котором администраторам нужно будет только одно — управлять средой (устанавливать ограничения), которые будут влиять на все объекты, созданные игроками.
И потом что мешает обычному игроку попросить своего товарища программиста за N игровых денег, заработанных например на квестах, создать какой-ни-буть "мегазавод по производству мегалазеров", спокойненько получать с него игровую прибыль и пагрейдить свою колонию за чсет покупки технологий у соседей?
Есть ли смысл ограничиваться жанром стратегии? Я бы предложил многопользовтельскую он-лайн role play game, с элементами стратегии, тогда игрок сможет ассоциировать себя с персонажем игры, от лица которого он играет, это повысит интерес от игры, как мне кажеться. К тому же в RPG можно встроить элементы стратегии. Просто игрок сможет выбрать линию игры... либо он качает одного "мегагероя" либо создает армию андроидов и управляет ими от лица своего героя...
Это всё сырые идеи... если реально интересно, то стоит сесть и расписать основные пинципы построения игрового мира, как они будут выглядеть с точки зрения игрока, и уже на основе этого пытаться выстроить архитектуру приложения...
И еще почему меня интересует именно многопользовательская он-лайн игра:
-) Очень интересно играеть с живыми людьми
-) Совершенно другой уровень сложности приложения (для меня это сложно и, поэтому, интересно)
-) Если всё сделать правильно — в это будут играть люди, причем не только программисты.
/// ответ конкретно на это сообщение —
http://www.rsdn.ru/Forum/Message.aspx?mid=1521349&only=1Автор: loknalori
Дата: 05.12.05
/// рекомендую прочесть.
///вобще — ветка начинается тут
http://www.rsdn.ru/Forum/Message.aspx?mid=1519235&only=1Автор: Macedonian
Дата: 02.12.05
///Еще один пост
Еще из идей:
Предлагаю разделить проект на несколько частей: UI, Core, Environment, где
UI — ну тут ясно, графика, ввод ну и т.п.
Core — это ядро системы, которое отвечает обработку программируемых игроком объектов, т.е. содержит иерархию классов, необходимую для создания юнитов к игре... (возможно на первой итерации можно просто ограничиться алгоритмами поведения готовых юнитов)
Environment — эта часть в которая "содержит" все объекты игровой реальности, т.е. фактически набор параметров которые ограничивают возможности каждого объекта, эта часть и будет отвечать за баланс в игре, т.е. несбалансированный объект просто не сможет существовать в этой среде, или же его возможности будут ограничены средой, как это сделать это задача..., которую предстоит решить...
/// WoldemaR
Простите что вмешиваюсь. Позвольте сформулировать цель следующим образом: Главное, чтобы игроки, имеющие разную игровую активность, в том числе и по причине занятости, получали достаточное удовольствие от участия в игре. Если вас такая формулировка устраивает, по позвольте предложить вам один рецепт.
В стратегической игре участник может использовать ресурс на добычу и накопление ресурса. Таким образом он из категории военных переходит в категорию промышленников и банкиров. Что это даёт?
Во первых, приумноженный ресурс можно перенести в другую партию. Это нарушит баланс сил, но в этом и цель игрока — получить преимущество. Зато это можно скомпенсировать возможностью ограбления мамона. А теперь внимание!:
По окончании партии у грабителя и пострадавшего появляется общий заблокированный счёт. Для снятия денег(ресурса) со счёта (равного сумме на момент грабежа) надо каждому ответить на вопрос: "кому отдать средства?" — другому или себе. И тут вступает в игру известная психологическая дилема, потому что:
-) если оба ответят — "отдать другому", то каждый получит половину.
-) если оба укажут на одного, то он получит всё.
-) если оба захотят взять себе, то никто ничего не получит.
/// JazzzMaster
(текст на категории не разбиваю...)
-) Надо создать что-то концептуально новое, непохожее на обычные Strategy и RPG, только так можно вызвать интерес и привлечь достаточное число энтузиастов в разработку. Еще один клон Starcraft с оооочень медленным реалтаймом никому не нужен.
-) Игрок перед началом игры программирует поведение всех юнитов. Игра происходит в realtime без участия игрока. Запрограммировавший наиболее оптимальный алгоритм развития игрок побеждает. Т.е. своего рода война алгоритмов развития. Это избавляет игрока от участия в процессе самом игры (битвы) и сообветственно отпадает проблема разницы часовых поясов и свободного времени у играющего.
-) Исходные данные у игроков равны. Игрок дожен сконцентрироваться на алгоритме развития. 1 раса, 1 абстрактный вид ресурсов (можно обозначить как $), 1 база с которой начинать развитие. В игровом мире имеется некоторый набор свойств(скиллов, возможностей, видов оружия и т.п.) из которых можно создавать свой собственный юнит. Скиллы, к примеру — Healph Pack, Speed, Ammo Pack. Возможности — возможность сбора ресурсов, постройка зданий, возможность ремонта других юнитов. Оружия — пушки, пулеметы, гранатометы и все остальное. Все это можно нацепить в некоторых количествах на один юнит либо на здание. Каждое свойство юнита будет стоить некоторое число money и может влиять на другие свойства (например, число ammo pack и количество навешенного оружия влияет на speed).
-) Согласен с Macedonian по поводу
Обобщая эту идею, можно задать разумные алгоритмы по умолчанию для самых распространенных действий. Игрок может задать свои алгоритмы для класса юнитов, группы юнитов, либо для отдельных юнитов. Поведение юнита получаем по следующей цепочке: алгоритм для конкретного юнита, для группы юнитов, для класса юнитов, по умолчанию. Т.е. наибольший приоритет у алгоритма для конкретного юнита, наименьший — у алгоритма по умолчанию.
-) Сделать одну точку сбора ресурсов, чтобы юниты не разбредались по всему игровому полю. Т.е. сделать своеобразное место встречи, которое будет стремиться захватить каждый игрок. Захватил точку с ресурсами — считай победа у тебя (хотя не факт). Другим игрокам надо либо отбивать его у тебя либо сдаваться. Собственно, основная цель этого введения — не затягивать игру.
-) Игрок проиграл, если уничтожены все его здания.
Привожу пример игрового мира. Космос. Ресурс — космическая пыль (как в Homeworld). 4 игрока. У каждого в начале игры база, 500 $ на начало развития, 1 юнит с 100 hp и 5 speed. Начинаем строить юниты со скиллом сборщика ресурсов. Параллельно можно к ним пожцеплять навыки — speed, attack, extendeв ammo, extended health, но на каждый навык уходит определнное количество ресурсов $. К примеру, можно построить 1 сборщик с высоким навыком атаки и защиты и низкой скоростью, либо 3 сборщика и низкими навыками атаки и защиты и низкой скоростью, либо 10 сборщиков без навыков атаки и защиты, но с оч. высокой скоростью. Все начинают собирать ресурсы, параллельно пытаясь выбить игроков с точки сбора ресурсов. Естественно, алгоритмы сбора и поведения юнитов в битве программируются заранее (перед началом игры) игроком.
В общем суть моих мыслей ясна, я думаю. Теперь ваши мысли вслух.
/// WoldemaR
так, надеюсь, что в принципах игры мы определились.
Поправьте если я что-то неверно излагаю.
Это 2D стратегия со скриптовым интерфейсом.
Основной изюминкой является именно скриптовый интерфейс.
Поясню для тех кто не читал обсуждение.
Каждый программист-участник игры пишет скрипт(-ы) для своих юнитов.
Затем скрипты выполняются в игровой среде.
Побеждает тот, чьи юниты выполнили поставленную задачу наилучшим образом.
Для начала, предлагаю максимально упростить: цели, средства и правила игры.
Как первичные цели предлагаю смоделировать размножение, сбор ресурсов и строительство.
Во-первых, это проще, чем моделирование военного конфликта.
Во-вторых, эти задачи являются базовыми для остальных наворотов.
В качестве критерия победы можно использовать время, затраченное на строительсво определённой инфраструктуры.
Модель среды должна быть эстетически привлекательна, чтобы было приятно наблюдать за игровым процессом. При этом, не целесообразно на первоначальном этапе тратить время на чисто дизайнерские издержки по построению карт и моделей инфраструктуры.
Поэтому предлагаю в качестве исходной и целевой карты среды использовать растровые картинки коих в инете навалом. Тогда цвет — базовая характеристика игрового поля.
Модель поведения юнитов:
Надо обеспечить командный интерфейс для юнитов, чтобы они могли размножаясь и бегая по карте её трансформировать исходную картинку в целевую за наименьшее время.
Необходимо стимулировать борьбу алгоритмов по нахождению оптимального поведения.
В качестве искуственного конфликта предлагаю взаимо-исключающие цели преобразования и размножения. Тогда первой целью игрока будет нахождение баланса между ними. (1) Основной вопрос — когда юнит прекращает размножаться и начинает строить?
Это однофакторная задача. Игра в такой форме быстро надоест.
Поэтому предлагаю ввести ограничение на модификацию клеток игрового поля (за 1 такт цвет клетки меняется не более чем на 20%) с тем, чтобы заставить игрока принимать решение между модификацией клетки и перемещением её содержимого в другую клетку.