/pr/ - Программирование
Заголовок  
Текст
Изображение
Перейти к   
  • Поддерживаемые типы файлов: gif, jpg, png
  • Запрещено: детская порнография/эротика
Файл jpg(1200×675)
миллениал придумывает eu4миллениал придумывает eu4 Анонимус 28 Июля 2019 в 22:07:43 ID: 413850
в етом итт-треде на етой мёртвой борде я, инвалид без специального образования, буду делать стратегию своей мечты
суть(тм) Анонимус 28 Июля 2019 в 22:19:38 ID: 413851
ну крч главная фишка и отличие от других стратегических игор тут в отсутствии такой фичи, как универсальная валюта, вроде дукатов в европке и золотых бетховенов в цивилизации, всё развитие будет строиться на населении и организации человеческого труда, соответственно, если построена эффективная система упрвления, то ты можешь организовать призыв в армию, строительство БАМ или массовые жертвоприношения, а иначе даже если у тебя в стране 30 миллионов крестьян по домам сидят-пердят-не высовываются, то и гегемоном не станеш. Соответственна, под эту тему бует система реформ в упарвлении населением, административно-территориальном делении и прочем, из чего можно будет собрать че угодно от раннего феодализма когда крестьяне приклеены к земле, землёй рулит феодал, и соответствующим образом организуется армия, до системы инков, которая работала вообще без денег, тупо на административном ресурсе перемещли целые племена и мобилизовывали многотысячные армии, и до капитализма аки в виктории второй, вооот
Анонимус 28 Июля 2019 в 22:21:49 ID: 413853
как это конкретно всё реализовать в коде и что для этого использовать я пока не в курсе, так что опишу механики игры, чтобы не забыть
Карта Анонимус 28 Июля 2019 в 23:23:13 ID: 413858
Карта бует состоять, как и в пароходоиграх, из провинций, причём размеры их будут примерно равны, а не как в пароходных. Отличаться провинции будут:
1. Рельефом (пустыни/степи/луга/леса/холмы/горы/тропические леса/...), каждый тип будет иметь разные модификаторы к процессам, которые будут происходить в провинциях, вроде битв, роста населения и строительства
2. Населением (тут даж минимальное описание заслуживает отдельного поста, думаю)
3. Возводимыми постройками (дамбы, храмы, крепости, ...) добавляют определённые модификаторы на местность, их постройка производится или местным самоупрвлением, или вручную правителем, опять же с привлечением рабочей силы, всё связанное с постройкой определяется проведёнными реформами управления населением
4. Ресурсами (железо, золото, древесина, нефть, лошади, ...) необходимы для всякого вроде постройки некоторых зданий, либо найма войск, либо имеет ценность в торговле с другими субъектами игры (и для торговли отдельный пост нужен, к тому же её я ещё не продумал)

Это касается только сухопутных провинций, морские крупнее и не обладают ничем из вышеперечисленного
Анонимус 29 Июля 2019 в 01:17:11 ID: 413859
Файл jpg(1280×720)
Чо как думаешь, в редакторе карт варкрафта WorldEditor можно ли реализовать твою задумку? Я бы поиграл.
Анонимус 29 Июля 2019 в 01:28:49 ID: 413860
ID: 413850
на етой мёртвой борде
Нет.
Анонимус 29 Июля 2019 в 01:29:43 ID: 413861
ID: 413850
буду делать стратегию своей мечты
Валяй.
Но учти:
Постов должно быть
ДЕЙСТВИТЕЛЬНО ОЧЕНЬ МНОГО.
Анонимус 29 Июля 2019 в 02:13:14 ID: 413865
ID: 413858
даж минимальное описание заслуживает отдельного поста, думаю)
Правильно думаешь.
Анонимус 29 Июля 2019 в 10:52:51 ID: 413896
ID: 413859
Не, в варкрафте каждый мужик бегает, чето делает, всё сразу видно,а я хочу чтоб прям гло баль на, и мужики были только цифрми на экране, от которых зависят другие цифры
Анонимус 29 Июля 2019 в 11:17:14 ID: 413898
ID: 413858
Инфу о провинциях можно хранить в текстовых файлах, по одному на провинцию, например. Структура файла примерно следующая:
(название файла -- айди провинции + название, в европке так же работает)
(далее содержимое)
owner = ABC; /трёхбуквенный код страны, например, каждая страна со всей инфой о ней соответственно будут храниться в другом месте/
name = Ulan-Bator;
buildings = church, fortress;
population = {
/
тут много инфы о населении
/
}
relief = steppe;
resources = horses, oil;
neighbors = 1231, 1232, 1233, 1235; // провинции, в которые может мигрировать население или перемещаться армия из этой провинции, расстояния можно не прописывать, т.к. все они по размерам примерно равны
Насчёт последнего не уверен, может, лучше инфу о соседстве извлекать из глобальной карты?
Всё ещё карта Анонимус 29 Июля 2019 в 11:27:43 ID: 413899
Собственно, карта будет представлять из себя несколько png-файлов в высоком разрешении, один для карты рельефа, другой для политической, третий для населения и т.д. Обновляться они будут после каждого изменения инфы, то есть политическая перекрасится когда кто-то что-то захватит, а населения каждый месяц. Также нужна, наверное, один главный файл, в котором каждая провинция обозначена своим цветовым кодом, и когда игрок будет кликать куда-то на карте, именно по этому файлу игра определит, в какую провинцию он ткнул
Анонимус 29 Июля 2019 в 11:35:54 ID: 413900
ID: 413898
Инфу о провинциях можно хранить в текстовых файлах,
Желательно несколькими постами.
Анонимус 29 Июля 2019 в 11:35:57 ID: 413901
У меня вообще нет опыта в создании игр, и я не в курсе, как будет лучше хранить и обрабатывать информацию, просто описываю один из принципов, по которым это может работать, вот. Может, можно всё сделать удобнее, или есть какие-то подводные камни, с этой темой мне реально нужна помощь
Анонимус 29 Июля 2019 в 11:36:58 ID: 413902
Кстати отлично, что тематический тред наконец то соответствует тематике раздела.
Население Анонимус 29 Июля 2019 в 11:53:48 ID: 413906
Население в каждой провинции можно представить как совокупность нескольких классов, у каждого класса будут собственные параметры численности, уровня жизни, лояльности текущему правительству, национальности(оч хочется накинуть разным нациям разных бонусов, тип французские феодалы лояльнее правительству, а мобилизованные немецкие крестьяне лучше воюют). Так что в виде, записанном в файл, это может выглядеть следующим образом:

feudals = {
population = 123;
level_of_life = 0.78;
loyality = 0.25;
ethnicity = german;
}
farmers = {
population = 1400;
level_of_life = 0.31;
loyality = 0.68;
ethnicity = german;
}
slaves = {
population = 3600;
level_of_life = 0.06;
loyality = 0.12;
ethnicity = ethopian;
}
....
Это в инфу о населении в этот пост, например ID: 413898
Армии и битвы Анонимус 31 Июля 2019 в 01:46:22 ID: 413985
Армии будут состоять из "полков", подразделений, мобилизуемых из населения. В начале игры их размеры будут невелики, например, один полк рыцарской кавалерии будет включать двести человек, а крестьянского ополчения -- пятьсот, но к концу игры будут появляться новые доступные для создания подразделения, всё большего размера.
Каждый полк будет иметь несколько характеристик:
- Скорость (на карте, несколько объединённых в армию полков имеют скорость самого медленного)
- Максимальная организация (организация полка растёт за время, проведённое вне битв, влияет на бои)
- Максимальное количество (пополняться полки будут с ближайших дружественных территорий соответствующим населением (крестьянское ополчение крестьянами, полк мобилизованных буддистских монахов монахами), время пополнения зависит от расстояния до дружественной провинции)
- Урон на расстоянии
- Урон в контакте
Теперь собственно битвы. Когда в одной провинции встречаются две армии враждующих сторон, происходит бой. Каждая битва проходит на поле, состоящем из квадратных клеток, высота и ширина поля (в клетках) определяются только местностью (в горах оно меньше, в степях больше). Каждый полк занимает одну клетку. Полки появляются с противоположных сторон, одна сторона сверху, другая снизу (ни на что не влияет), в первый день боя по одной линии, далее, если крайний ряд освободится(подразделения пошли вперёд или уничтожены), появляется следующее подразделение. Каждый полк действует по следующему алгоритму: если он наносит дальнего урона больше, чем ближнего, стоит на месте и наносит свой полный дальний урон вражескому полку напротив него и по половине двум соседям, иначе же наносит половину дальнего урона противостоящему и по четверти соседям и идёт на сближение на одну клетку. Если полки находятся друг напротив друга, они вступают в ближний бой и наносят друг другу каждый ход по полному урону ближнего боя. Ход длится один день, так что каждая битва будет длиться как минимум несколько дней.
Урон считается так: организация\численность\урон(дальний или ближний)
Получаемый подразделением урон распределяется между организацией и численностью следующим образом: если организация больше пятидесяти процентов от базовой, численность получает 25\% урона, организация 75\%, если меньше 50 -- наоборот. Если организация равна нулю, подразделение не наносит урон и получает 100\% урона по численности.
Анонимус 31 Июля 2019 в 01:49:27 ID: 413986
ID: 413985
С разметкой накосячил, ну и ладно. Схема кажется сложной, но на самом деле она интуитивно понятна и позволит, думаю, при должной калибровке характеристик войск, отобразить войны во временном диапазоне от 1356 до 1956, как минимум.
Морские битвы Анонимус 31 Июля 2019 в 02:06:54 ID: 413987
Коаблистроятся в прибрежных провинциях, матросов к общей численности населения можно не учитывать за малым количеством.
Корабли будут иметь след. характеристики:
- Макс. прочность (при нуле корабль разваливается)
- Дальность огня
- Урон
- Броня
Схема поля боя та же, но оно имеет фиксированный размер для всех морских провинций, довольно большой. Одна клетка -- один корабль. Корабли появляются друг напротив друга, алгоритм действий: если расстояние больше дальности огня, приближается, иначе стоит на месте и наносит свой полный урон, умноженный на прочность и делённый на макс. прочность противоположному кораблю.
Если броня атакуемого больше получаемого в ход урона, урон не засчитывается, если меньше, прочности засчитывается (урон - броня), если меньше в да раза, броня игнорируется.
Я пока нигде (кроме Корсаров) не видел реально логичных и понятных морских битв, вот срсли, как вообще весь этот хаос перевести в простую мтематическую модель, чтоб играть можно было
Административно-территориальное деление Анонимус 02 Августа 2019 в 12:35:55 ID: 414149
Фиксированных размеров регионы и субрегионы (тип есть регион Россия, в неё входят Московский, Новгородский и несколько других субрегионов). Каждой провинцией , регионом и субрегионом может управлять правитель под управлением ИИ, в зависимости от проведённых гос. реформ они имеют разные полномочия -- при феодализме правители передают власть по наследству, могут захватывать земли других феодалов внутри государства, призываются в армию вместе со своими войсками и только если лояльны, а при каком-нибудь сталинском коммунизме правители почти не имеют полномочий, могут только заниматься местным строительством, например, и назначаются сверху.
Территории могут быть регулярными, и тогда на них действуют эффекты от всех проведённых реформ в государстве, автономными территориями, тогда с каждой из них нужно будет разбираться отдельно (как например Финляндия в составе РИ в 19 веке), и колониальными регионами, для них можно отдельную ветку реформ запилить, например.
Каждый ИИ-шный правитель бует иметь след. характеристики:
- лояльность (на начальных этапах игры и когда у территории выскокий уровень автономии важна
- возраст (влияет на то, когда он умрёт)
- компетентность (эффективность управления)
Взаимодействия с регионами будут зависеть от лояльности населения и лояльности правителей, со временем автономные и колониальные регионы можно будет сделть регулярными, и наоборот.
Вот это всё с местным самоуправлением довольно важная фишка. Когда играл в Викторию за коммунистические страны всегда бесило, что нужно фабрики все строить вручную, а когда у тебя двести тыщ провинций это вообще нереально, а так можно делегировать эти полномочия местным властям.
Дипломатия Анонимус 03 Августа 2019 в 13:07:28 ID: 414194
Дипломатия хорошо сделана в Европе, все действия можно спереть прям оттуда. С некоторыми оговорками -- например, вместо "предложить стать вассалом" маленькой стране с хорошими отношениями можно предложить стать автономным регионом.
Технологии Анонимус 03 Августа 2019 в 22:11:27 ID: 414200
Тут крч бует дикое дерево, как в Цивилизации, но каждая технология будет принадлежать к определённой категории, тип военные исследования, административные, морские, атомные и т.д.
Скорость изучения будет зависеть в начале от навыков правителя и поца в правитльстве вроде советника по науке, со временем технологии будут всё сложнее в изучении, но вместе с тем будут открываться научные постройки вроде университетов, колледжей, НИИ, которые будут проводить исследования в определённых категориях, вот.
Правительство Анонимус 03 Августа 2019 в 22:16:41 ID: 414201
Будет предствалять из себя список должностей, которые будут определять бонусы, кторые будет давать человек на посту, и собственно людей, от компетентности которых зависит величина бонусов.
В зависимости от реформы некоторых должностей не будет, некоторые будут назначаться вручную, некоторые передаваться по наследству, некоторые выбираться народом, лол. Собсна выборы, чтоб зависело от населения, не будет, просто рандом с повышенным шансом для персонажей с перком "популист", например.
Реформы Анонимус 03 Августа 2019 в 22:22:48 ID: 414202
Собсна самое главное. Если кто играл в "кризис в кремле", то тут что-то подобное -- есть по дереву реформ в каждой из областей, вроде административно-территориального деления, экономики, набора в армию и др. И, соответственно, можно между ними переключаться, но только при соблюдении определённых условий.
Например, убрать феодальное управление землёй и перейти к абсолютизму можно будет только если средняя лояльность дворян по стране больше 0.4, и в провинциях с более низкой лояльностью они поднимут бунты нахуй.
По ветке в следующих сферах:
- Местная власть
- Экономика
- Землепользование
- Армия
- Верховное правительство
Анонимус 03 Августа 2019 в 22:34:07 ID: 414203
Ещё население надо как-то лучше сделать, а то я забыл про существование возрастных групп, пол, образованность и тучу других вещей, про которые забывать не стоит, но я чот пока не оч представляю, как это можно представить в виде объекта памяти, не делать же каждого человека отдельным объектом.
Ну и в принципе вроде всё описал, базы данных под каждую из этих тем со списком всех возможных отрядов войск, реформ, построек, рельефов и их бонусов лучше делать после хотя бы минимальной реализации всех вышеописанных фич.
Время заниматься кодингом всей этой темы, но я вообще пока не представляю, с какой стороны подступиться. Писать с нуля на каких-нить плюсах? Но как, блин, во всё это врубиться, если я только консольные программы умею пилить? Использовать готовый игровой движок? Но какой? Где есть все необходимые инструменты штоб всё сделать таким образом?
Пока склоняюсь к godot engine, он вроде довольно простой и можно всякое делать, но чорт его знает
Анонимус 04 Августа 2019 в 09:23:12 ID: 414204
Будет ли твоя игра выложена в steam?
Платная она будет или бесплатная?
Анонимус 05 Августа 2019 в 14:44:18 ID: 414288
ID: 414204
Если я её когда-нибудь запилю, то скорее всего да, и скорее всего платная, но недораха. Но это ещё зависит от качества продукта, черт его знает, что за кадавр будет на выходе, как бы не новый age of civilization
Анонимус 05 Августа 2019 в 16:20:29 ID: 414289
Файл jpg(540×399)
ID: 414288
недораха

а если я просто пососу твой междуножник?
Анонимус 05 Августа 2019 в 16:37:28 ID: 414290
ID: 414289
междуножник

но он модератор!
Анонимус 05 Августа 2019 в 17:23:05 ID: 414291
ID: 414289
Тогда дораха
Торговля Анонимус 05 Августа 2019 в 17:40:51 ID: 414292
Такк, ну крч в каждой провинции производятся какие-то товары, как я уже писал.
На международном рынке всё-таки придётся оставить концепцию универсальных деняк, ибо реальную экономику реализовывать будет прям оч сложно, их роль будет выполнять золото.
В опчем, есть три рынка: внутренний, рынок союза (союзные страны, сателлиты, страны в сфере влияния), общий. Все товары сначала поступают на удовлетворение внутренних нужд (строительство, найм войск, нужды населения), излишки с внутреннего рынка идут затем на рынок союза, затем на общий.
Можно бует объявлять эмбарго определённой стране, и товары, произведённые в стране, объявившей эмбарго, не будут продаваться в страну под санкциями. Если у страны под эмбарго нет выходов к морю, то кроме того будет теряться процент товаров, которые она импортирует из других стран, соответствующий проценту сухопутной границы с государством, осуществляющим эмбарго. Если выход к морю есть -- половину от этого процента. Можно устроить морскую блокаду, её эффективность будет зависеть от количества кораблей.
Таким образом, можно будет запилить континентальную блокаду, как хотел Наполеон, или задушить экономику какой-нибудь Эфиопии, захватив земли вокруг неё и объявив эмбарго.
Анонимус 05 Августа 2019 в 20:55:43 ID: 414293
ID: 414292
захватив земли вокруг неё


Захвати сначала моё очко!
Анонимус 06 Августа 2019 в 12:02:29 ID: 414297
ID: 414293
захватил
Анонимус 07 Августа 2019 в 23:05:06 ID: 414333
аъъ, к чорту все эти движки-шишки, это от шайтана всё, наччну уже писать кусками каркас на с++, а интерфейс -- чорт с ним, с интерфейсом, потом приложится лел
Анонимус 09 Августа 2019 в 23:52:09 ID: 414433
ID: 413985
Так, ладно, передумал, если организация будет равна нулю, полк отступит, а то чет они вообще в мясо в первой же битве перережутся.
Анонимус 09 Августа 2019 в 23:53:35 ID: 414434
а какой тут бамплимит?
Анонимус 10 Августа 2019 в 16:14:07 ID: 414460
ID: 413985
Так, небольшое изменение по битвам. Если на поле боя четыре и более горизонтальных строки, то в начале битвы в крайние позиции становятся полки с большим дальним уроном, полки с большим ближним уроном становятся на клетку ближе к середине, таким же образом будут поводиться и новые войска.
А то иначе каждый бой с числом полков больше десяти будет как при Аустерлице, лол.
Анонимус 17 Августа 2019 в 22:01:29 ID: 414872
Неделю пинал хуи, но почти дописал битвы, в основном. Но внезапно обнаружил, что формула рассчёта дамага абсолютли всратая и черезжеппная, так что неплохо бы сделать это всё как-то по-другому, но основы боя -- поле определённого размера, движение войск с высоким ближним уроном, то, что дальнобойные пушки остаются сзади, хочу оставить.
Анонимус 18 Августа 2019 в 01:08:50 ID: 414876
Спустя четыреста строк кода и неопределённое количество попыток скопировать один стандартный <list> в другой компилятор заебался ругаться на мой код и нашёл ошибку в 1517-й строке в stl_list.h, найс
Анонимус 18 Августа 2019 в 01:20:53 ID: 414877
Первоначальный вариант, ничего не работает, но если решить проблему с копированием списков может и заработает.
Будущие изменения:
1. Решить все проблемы со списками.
2. Изменить формулу расчёта потерь и организации, сейчас в битвах все будут тупа нести жэстачайшие потери. (мне пока что просто не приходит в голову более рациональный метод считать потери, ъъъ)
3. Раскидать классы по файлам, закинуть на гитхаб. (но это когда всё бует норм работать, пока это просто наброски)
https://pastebin.com/RFd5T8rn
Анонимус 18 Августа 2019 в 01:23:29 ID: 414878
Хорошо всё-таки что борда едва жива, дневник разработки за неделю не уплыл никуда.
Мысли насчёт боёв Анонимус 18 Августа 2019 в 04:35:56 ID: 414879
Для сторон можно добавить такой параметр, как укреплённость. Это будет действовать только на обороняющуюся сторону, и не будет действовать на урон, получаемый в ближнем бою. Уровень укреплённости бует зависеть от построек и от времени, которое армия провела на одном месте, максимальный будет определяться технологиями. Привет, позиционная война, хы.
Но это так, приятная мелочь, всё ещё нужно придумать основную систему, по которой будет вестись бой. Вариант N.2:
Каждый полк имеет параметры:
- урон ближний
- урон дальний
//примерная прикидка, сколько человек сможет убить один из солдат за определённое время (например за минуту), тупо атакуя необученную толпу, дробное число (для дальнего боя какого-нибудь наполеоновского полка, учитывая скорострельность 3 выстрела/минута, можно взять, учитывая низкую точность, например, 0.3, для ближнего боя -- 1) (у пушек урон будет равняться количеству пушекубитых_в_минуту/количество обслуживающего персонала, примерно)
- базовая максимальная организация (дисциплинированность войск, ъъ, зависит от тиа полка)
- максимальная организация (будет расти от вымуштрованности и боевого опыта полка, это важно, ящетаю)
- организация (будет восстанавливаться сразу после боя)
//нихуя я усложняю, конеш, но вроде пока ничего прям лишнего
- максимальное количество
- количество
//тут всё понятно
- тип (пехота, кавалерия, пушки, будет влиять на получаемые модификаторы от местности, лидеров и других плюшек, ну и чтобы слияние полков нормально работало)
- боевой опыт (повышается тренировками и боями, падает не со временем, а с пополнениями, но не оч сильно, а то будет как в европке с бесполезной вымуштрованностью) (максимум боевого опыта будет одинаков во все времена у всех видов войск, тут и правда усложнять будет лишним)
- тупа пачка эффектов, положительных или отрицательных, получаемых при создании или приобретаемых. В числе важных -- дезорганизация, получается после отступления из боя, режет организацию в четыре раза, исчезает если в конце месяца полк стоит на дружественной территории. Также бонусы к скорости тренировок, например, и урону, дальнему или ближнему. В каком виде их удобно хранить в памяти пока не придумал.
Так, собственно бой остаётся таким же, как и в первом варианте, но формулы урона меняются.
Урон, наносимый полком: количество
ближний_или_дальний_уронмодификаторыорганизация/макс.организация
Урон, получаемый полком:
Сперва численность получает урн0.5макс_организация/организация, затем организация получает урон*0.5.
В итоге, штыковая атака имба, но войска со слабой организацией до неё не доживут. Битвы будут происходить примерно по одному шаблону, то есть:
1. Расстановка войск
2. Сближение с взаимным обстрелом, на этом этапе дезорганизованные войска теряяют часть организации, в это время с задних рядов идёт обстрел противника
3. Стремительная штыковая, обстрел с задних рядов
4. Спустя пару дней полки теряют организацию и состав
5. Их места занимают новые из резерва(гото 3) либо противник продвигается вглубь
Сторона проигрывает и отступает если хотя бы один полк противника проник в крайний ряд, либо если на поле боя не осталось полков этой стороны.
Такая система, полагаю, будет адекватнее первоначальной, но всё равно как-то кривовато, надо доработать.