Войти

DMD 'Ware

Блог

Редактор карт для RTS игры - Specular, bump/normal mapping, cast shadows
Ну как
Изображение
Изображение

Это надо смотреть в высоком разрешении чтобы видить детали в верхне-правом углу.

Ссылка
11 июля 2013

Сворачивание геометрии
Теперь я могу свернуть коллекцию плоскотей определяющих выпуклое оболочко в треугольники.
Изображение

Выпуклые оболочки или «кисточки» (brushes) в шутерах от первого лица, которые произходшые от Quake/Doom-архитектуры, это геометрия для обнаружение и реагирования с столкновениями. С помощью набора плоскостей, например 6 для всех сторон куба, мы можем обвести любую выпуклю форму. Это упрощает обнаружение столкновений против выровненных-по-осям-ограничивающих-коробок (axis-aligned bounding boxes) и сферов, потому что всё что мы должны сделать, это проверить каждую плоскость/сторону кисточки против самой дальней и ближайшей точки из коробки или сфера (далнейшая от "внутренной" стороны плоскости, считающяся с позиции перед момента движения, и ближайщая от внутренной сторони плоскости с двинутой позиции), и проверить, если обе точки находятся на обеих сторонах плоскости или внутри. Если есть точки на внутренней стороне каждой плоскости есть пересечение со сфером или коробочкой и не трудно получить точное расстояние которе мы должны двинуться, чтобы быть просто касаясь поверхность, с помощью скалярного произведения.

Чтобы рисовать кисточки, они должны быть разбиты на треугольники. Для этого я нахожу линейное пересичение между двумя плоскостями "i" и "j", и потом два точечных пересичения этой линии с двумя другими плоскостями "k" и "l", которое даёт два конца края состовляюшего полигона. Потом надо соединить ети края в полигона и развернуть их чтобы они были по часовой стрелке или против, зависимо как вы отбираете треугольники. И из этого полигона я строю треугольники в форме веера.

Ссылка
20 июня 2013

История в искусстве
Некоторые из искусств, начисленних на протяжении многих лет, которые являются вдохновением для проекта Государства и Корпорации
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение

Ссылка
14 июня 2013

Работа продолжается
Изображение

Ссылка
14 июня 2013

Battle Computer - новая франшиза
Мой новый RTS проект.

Работаю над редактором мира. Будет использовать BSP с генерированым navmesh'ом.

Изображение

Ссылка
13 июня 2013

Полчаса игры
Игра теперь длиться полчаса.
Изображение

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

На моей 18 минутной игры оно, казалось, шло хорошо.

Изображение

Но одно или другое мешало.

Оно страдает от проблем искусственного интеллекта. Мол, если AI строит действительно длинные дороги вокруг озера к строительству цементного завода и там не хватает цемента на дорогу, и грузовики не могут попасть на другую сторону, чтобы получить цемент цементного завода. Или, если у грузовика заканчивается топливо, и они должны транспортироват до НПЗ, но вместо транспортировуут цемент на дорожные проекты. Или грузовиков движется в противоположных направлениях в тупик, натыкаясь друг за другом бесконечно.

Я думаю, если я хочу добавить многопользовательность, чтобы решить все эти проблемы.

Ссылка
29 мая 2013

Ортографичность
Игра теперь ортографическая
Изображение

Ссылка
28 мая 2013

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

Я расшитал что придется платить $ 0.42 за все труды каждому ИИ игроку. Но ИИ получались на грани банкротства. Что-то было не так. Я увеличел наличные до $ 9.00. Я потом узнал, что ИИ тратят чрезмерное количество на заказы воинских частей на заводе другого ИИ. И я узнал что расчет транспортных расходов, который зависит на длину маршрута, использовал функцию квадрата длины Magnitude3() на 2-х измерениях, которую я нечайно принял быт той, которая просто давала длину на 2-х измерениях.

Забавный факт: Андре Ламот писал об этом в Хитрости Гуру Программирование Игр. Вместо вычисления расстояния с помощью квадратного корня и, видя, если это десять, вы просто берёти то, что вы получаете перед корнем и провераете, если оно больше чем квадрат 10и. Только сегодня из Совершенный Кода я узнал, сколько процессорного времени это экономит.

Изображение

Еще одним усовершенствованием является быстрый обратный корень квадратный, популизированым Джоном Кармаком, для нормализации векторов.

Изображение

Во всяком случае, игроки по-прежнему на грани банкротства, в результате чего они продавали все свое имущество за $ 0, пока только один ИИ оставался со всем имуществом. Стало важно сбалансировать начальной цены продажи ресурсов.

Изображение

Я впервые попытался использовать дополнительные вычисления. Я установил заработную плату для всего труда / рабочих мест до $ 0.01 (позже я бы поднял бы всё вверх на коэффициент 10, чтобы позволить варьировать, так как $ 0.01 является наименьшая составная часть изменений) ...

Изображение

... И суммируровал расходы всех входных в производстве каждого ресурса плюс добавил прибыль в размере $ 0.01.

Карьер: 10 труда => 5 камня так что $ 0.10 / 5 камень + $ 0.01 прибыль = $ 0,03 / камень

Ресурсы необходимо приходится транспортировать, от поставщика к требователю, и это стоит денги тоже. Грузовики потребляют 1 труда за 4 секунды и, следовательно, потребляют $ 0.01 / 4 секунды (я зафиксировал стоимость труда на $ 0,01 за каждую единицу, как я сказал прежде). Получается стоимость перевозки зависит от времени сколько поездка занимает, к поставщику, а затем к тому, кто требует. И это время зависить от длины путя. Я установил цену транспорта до $ 0.02 / 4 секунды, что дает прибыль в размере $ 0,01 / 4 секунды (не забыт что надо платит за 1у единицу труда каждые 4 секунды). Я узнал от лога, что обычная поездка была 6 оплат долго. Следовательно, для каждой перевозки, 6 оплаты в размере $ 0.02 требуется $ 0.12.

Цементный завод: 10 труда + 5 камня + 1 перевозка => 5 цементом так что (10 * $ 0.01 + $ 5 * 0,03 + 1 * $ 0.12) / 5 камень + $ 0.01 = <$ 0.09 / камень
Шахта: 10 труда => 5 руда + 5 урония + 5 угла так что 10 * $ 0,01 / 15 руда, урона, угля + $ 0,01 прибыль = <$ 0,02 / руда, урони, угля
Реактор: 10 труда + 1 урония => 10 электричества таким образом (10 * $ 0,01 * 1 + $ 0,02) / 10 электричество + $ 0.01 прибыль = <$ 0,03 / электричество
Камера сгорания: 10 труда + 1 угля => 10 электричества таким образом (10 * $ 0,01 * 1 + $ 0,02) / 10 электричество + $ 0.01 прибыль = <$ 0,03 / электричество
Нефтяная скважина (вышка): 10 труда => 3 сырой нефти так что 10 * $ 0,01 / 3 сырой + $ 0.01 прибыль = <$ 0.05 / сырой
Химический завод: 10 труда + 10 электричества => 10 химикатов так что (10 * $ 0,01 * 10 + $ 0,03) / 10 химикатов + $ 0.01 прибыл = $ 0.05 / химикат

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

Я увеличил использование электроэнергии зданий до 10, чтобы направить больше денег от торгового комплекса, который первоначально получял все деньги от голодных рабочих в покупке продуктов (потребительских товаров), тратя деньги, заработанные работая на всех других игроков, разорая их.

Завод по переработке руды в слитки: 10 труда + 5 руда + 10 химикатов => 5 металла так что (10 * $ 0,01 + $ 5 * 0,02 * 10 + $ 0.05) / 5 металл + $ 0.01 = $ 0.15 / металл
Нефтеперерабатывающий завод: 1 труда + 1 электричества + 1 химикат + 1 сырое + 1 перевозка => 3 топлива так что (1 * $ 0.01 + 1 * $ 0.03 + 1 * $ 0.05 + 1 * $ 0,12) / 3 топлива + $ 0,01 = $ 0,08 / топлив
и т.д.

Я увеличил потребность труда задний до 10, потому что я обнаружил, что после строительствэнной фазы игры, большинство рабочих стали безработные и не могли заработать, чтобы платить за жилище и питания. Увеличение необходимости труда до 10 (максимальная сумма труда которую они возможны делать без отдыха) дало им что-то делать во все время. Прежде, была проблема с покупке слишком много еды (на денги заработанные в фазе строительства), приводя к размножению рабочих, позже будучи не в состоянии найти работу и голодая. Я думал, что новые, высокие цены на продукты питания (потребительские товары) сбалансируют игру. Выселения также были чястые, так как рабочии были чясто не в состоянии платить аренду каждую минуту. Аренда могла бы быть собрана в то время, когда рабочему было мало денег, хотя что я даже запрограммировал их, чтобы они держали резерв в аренду, а не тратили все на еду до степени размножения. Квартиры не требуют некаких входных так что я поставил ихнию цену до минимально возможного уровня - $ 0.01 - так что рабочие должны были быть в состоянии себе это позволить.

Грузовики также потребляют топлив с определенной скоростью. Игра идет со скоростью 30 кадров в секунду, так что количество кадров за поездку

6 оплат/перевозку * 4 секунды/оплату * 30 кадров/сек = 720 кадров/перевозки

Грузовик движется 0,35 единиц за кадр, так что они переполняют

720 кадров/перевозку * 0,35 ед/кадр = 252 единиц/перевозку

И плитки составляет 16 единиц (я знаю, я должен был использовать метрическую систему), так что

252 единиц/перевозку / 16 плитка/единица = 15,75 плитка/перевозку

Грузовик потребляет топлив каждые 2 плитки так что

252 единиц/перевозку / 32 единиц/потребление = 7,875 потребления/перевозку

Каждый раз, он потребляет 0,5 топлива.

7,875 потребления/перевозку * 0,5 топлива/потребление = 3,9375 топлива/перевозку

Это на самом деле, казалось, своего рода высоко, потому что я не наблюдал топлива, потребляемого так быстро, но я буду доверять уравнению. (Некоторые поездки были только 3 оплаты в длину и 6 было на самом деле высоко.) Цена за единицу топлива составила $ 0,08, так что стоимость топлива за одну перевозку выглядет так:

3,9375 топлива/перевозку * 0,08 $/топлива = 0,315 $/перевозку

Прибыль на одну поездку являлась

0.01 прибыль/оплата * 6 оплат/перевозку = $ 0,06 прибыли/перевозку

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

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

В моей следующей попытке сбалансировать экономику я хотел бы построить пирамиду над единственной вещью, которая была уверена - скорость потребления пищи. Каждый рабочий ражодует 0,001 еды за кадр и игра бежит 30 кадрах в секунду.

0,001 еды/кадр/раб * 30 кадров/сек * 60 секунд/мин = 1,8 еды/минуту/раба

Я хочу около 5 рабочих, чтобы быть поддержан 1 торговый комплекс, работая на скорости производства x1.

5 раба/магазин * 1,8 еды/минуту/раба = 9,0 еды/минуту/магазин

Это было только 1 единица еды меньше, чем было произведено в цикле. Таким образом, некоторые циклы он не требуется работать, и это составит в среднем 0,9 к производительности. Количество необходимых входных поэтому будет

Торговый комплекс (магазин): 0.9 (10 труда + 1 электричества + 1 химикаты) / мин = (9 труда + 0,9 электричества + 0,9 химикат) / мин
Ферма: 4,5 сельские продукты требованы/минуту / 5 сельские продукты произведны/мин = 0,9 коэффициент обеспеченности
Ферма: 0,9 (10 труда + 1 электричества + 1 химикат) / мин = (9 труда + 0,9 электричества + 0,9 химиката) / мин
Хим завод: 0,9 химкатов требованы/мин / 10 химикатов произведенно/мин = 0,09 коэффициент обеспеченности
Хим завод: 0,09 (10 труда + 10 электричества) / мин = (0,9 труда + 0,9 электричества) / мин
Фабрика: 5 производственных необходимы / мин / 20 производства генерируется / мин = 0,25 Коэффициент обеспеченности
и т.д.

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

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

Я рассчитаю сумму дохода каждого рабочего в минуту, минус расходы на жилище, а затем разделю его на количество пищи, необходимой в минуту, чтобы получить её цену.

Я буду бюджетить цену на топливо и его реквизиты основе на то, сколько прибыли грузовики заработают и разделю его на количество потребленного топлива, чтобы получить его цену. Я потом всё, вероятно, увеличю на 10 или 100. И поставлю цены на реквизиты в производстве продуктов питания в соответствии с ихней ценой. Топливо является одним из реквизитов, потому что перевозка необходима, поэтому цены на потребителских товаров должно быть достаточно, чтобы покрыть прибыли транспорта в минуту (то есть стоимость топлива в минуту), так, чтобы было не слишком много прибыли для вырожденной стратегии.

"Исследования" и военное производство не являются существенными и будут покрыты за счет прибыли все оставшиеся.

Ссылка | Комментарии [3]
26 мая 2013

Мягкие окна и шторы купить 55m.ru/proizvodstvo-myagkih-okon/resheniya/materialy.