Архив сообщества
2011 — 2019
Аватар Colton Cobb

Атмос хуятмос

Автор: Colton Cobb · 07.11.2017, 19:32 · 36 сообщений

Сообщений в теме: 36

Colton Cobb#1

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

Изображение

//gas_number = 21// (газоделитель)

Допустим, у нас есть закрытое квадратное помещение. Пол, стены, все такое говно. У каждого тайла пола в этом помещении есть свой показатель кислорода, который со старта равняется одному и тому показателю. Если я заберу из одного тайла кусок кислорода - остальные тайлы начнут делиться своим кислородом с обворованным, но это вызывает бесконечный цикл деления, ведь каждый отдает частичку себя и оказывается в том же положении что и тот обворованный, вынуждая остальных снова делиться.

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

Скопировать ссылку
MrNoize#2

Считаю выходом округление значения кислорода до сотых или тысячных значений. Тогда в один момент тайл отдаст часть кислорода, но сохранит своё значение.

Скопировать ссылку
sasichkamega#3

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

P.S: Ну и да, округление значения еще.

Скопировать ссылку
Vehast#4

Тайлы делятся кислородом до достижения минимального его значения. Например если кислорода 100 единиц в  тайле - он делится с соседними, логичнее делать значения кратными пяти, т.к. равный объем газа должен быть в центральном тайле и четырех соседних. Тогда при значении газа в тайле меньше пяти он перетает делиться с соседями, т.к. при значении 4 невозможно поделиться равномерно.

Это основа. Но ведь может быть меньше четырех свободных соседей, на их местах могут быть стены, а значит наш вариант работает только для пустых пространств. Усложняем нашу схему до учета соседних клеток. Логика такая: минимальное количество при котором происходит деление газа между тайлами равняется пяти единицам минус количество занятых стенами соседей. Вроде как в оригинале так это и реализовано.

Т.е. если все четыре соседа свободны - минимум для расширения = 5-0; при одном соседе = 5-1 и так до четырех, но запрещая деление минимальных целых чисел, т.е. единицы. :З

Скопировать ссылку
Colton Cobb#5
MrNoize (07 November 2017 - 10:54) писал:

Считаю выходом округление значения кислорода до сотых или тысячных значений. Тогда в один момент тайл отдаст часть кислорода, но сохранит своё значение.

Как в бьенде прописать округление переменной?

Vehast (07 November 2017 - 11:18) писал:

Тайлы делятся кислородом до достижения минимального его значения. Например если кислорода 100 единиц в  тайле - он делится с соседними, логичнее делать значения кратными пяти, т.к. равный объем газа должен быть в центральном тайле и четырех соседних. Тогда при значении газа в тайле меньше пяти он перетает делиться с соседями, т.к. при значении 4 невозможно поделиться равномерно.

Это основа. Но ведь может быть меньше четырех свободных соседей, на их местах могут быть стены, а значит наш вариант работает только для пустых пространств. Усложняем нашу схему до учета соседних клеток. Логика такая: минимальное количество при котором происходит деление газа между тайлами равняется пяти единицам минус количество занятых стенами соседей. Вроде как в оригинале так это и реализовано.

Т.е. если все четыре соседа свободны - минимум для расширения = 5-0; при одном соседе = 5-1 и так до четырех, но запрещая деление минимальных целых чисел, т.е. единицы. :З

Этот вариант чуть позже тоже читану подробно.

Скопировать ссылку
BombanyTI#9

Мало кто меня поддержит, но атмос в сске сейчас - это рудимент.

Его либо выпиливать, либо максимально упрощать.

Скопировать ссылку
MrNoize#11

ochen_bombanyTI (07 November 2017 - 12:44) писал:

Мало кто меня поддержит, но атмос в сске сейчас - это рудимент.

Его либо выпиливать, либо максимально упрощать.

Космическая станция 13.

Игра, написанная поверх симулятора атмоса.

> Его либо выпиливать, либо максимально упрощать.

Прости, Анимус, мы все проехали.

Скопировать ссылку
qed#12
ochen_bombanyTI (07 November 2017 - 12:44) писал:

Мало кто меня поддержит, но атмос в сске сейчас - это рудимент.

Его либо выпиливать, либо максимально упрощать.

Не вариант вообще. Без атмоса не будет сски. Если уж и фиксить этот бесконечный цикл, то фиксить грамотно и аккуратно. И подозреваю, что придётся использовать физику.

Скопировать ссылку
Your Perfect Enemy#13
qed (07 November 2017 - 21:20) писал:

придётся использовать физику.

Предлагаю добавить "игра разработана с привлечением настоящих ученых" в рекламу на игромании

Скопировать ссылку
Colton Cobb#14

Изображение

В общем, пока было свободное время на уроке - чирканул примерный принцип работы атмоса. Забейте хуй на оксиген, там может быть любой другой газ, просто в данном случае у меня пока других нет. Глядите конец листочка сразу (вторая версия), в первой я забыл про температуру. Это говно должно работать без циклов, если я не объебался конечно. Через пару часиков прибегу и опробую, вы пока можете делать ставки.

Оно крашит дм.

Сообщение отредактировал Colton Cobb: 08 November 2017 - 05:25

Скопировать ссылку
TereTox Multi#15
MrNoize (07 November 2017 - 14:41) писал:

Космическая станция 13.

Игра, написанная поверх симулятора атмоса.

Его либо выпиливать, либо максимально упрощать.

Прости, Анимус, мы все проехали.

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

Скопировать ссылку
GelpehtVeht#16
TereTox Multi (08 November 2017 - 06:20) писал:

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

На ТГ это единственная механика где нужно дрочить цифорки и думать как бы сделать так, как надо. +90% в атмос не могёт, в том числе и я.

Скопировать ссылку
TereTox Multi#18
GelpehtVeht (08 November 2017 - 07:38) писал:

На ТГ это единственная механика где нужно дрочить цифорки и думать как бы сделать так, как надо. +90% в атмос не могёт, в том числе и я.

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

Скопировать ссылку
Копиц#19
TereTox Multi (08 November 2017 - 08:59) писал:

Задыхалово, низкая температура и разгермы, убывающие об стены - самый максимум, что требуется от атмоса.

И боньбы. А больше ничего не требуется, Теретокс прав.

Скопировать ссылку
TereTox Multi#21
AndyAdjutor (08 November 2017 - 10:08) писал:

Лол, а в атмосе есть что-то ещё кроме того, что вы написали тут?

Нахуй не нужная система труб прямого соединения и атмосферный отсек. Сделать "без проводные" вентили с точкой удалённого управления и не парится.

Скопировать ссылку
Voldirs#22

Colton Cobb (08 November 2017 - 04:26) писал:

А у тебя красивый почерк.

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

А вообще для полных страданий можно сделать неидеальные газы, фазовые равновесия, кинетику реакций, завязать химию на атмосе и прочую интересную хрень. Но опять же, пусть это и будет относительно позновательно, 90% игроков тупо пройдут мимо потому что это сложна.

Скопировать ссылку
Colton Cobb#23

Начал с нуля, сейчас занимаюсь температурой. Вот функции отвечающие за деление температурой между турфами.

Изображение

Но во всем этом есть какая-то проблема, возможно я даже догадываюсь какая. Это дело работает через раз и не сразу детектит нужный турф. Скорее всего оно ловит один из восьми турфов находящихся в радиусе 1 тайла и бесконечно его проверяет. В бьенде есть какая-то функция чтобы проверить СРАЗУ все тайлы в определенном радиусе?

Невермайнд, исправил это.

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

Изображение

Сообщение отредактировал Colton Cobb: 08 November 2017 - 14:06

Скопировать ссылку
ucnaHez#24
TereTox Multi (08 November 2017 - 08:59) писал:

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

Как же ты со своими идеями заебал.

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

Ладно, сейчас ты этого не понимаешь.

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

Ну не лагает ССка, не веришь - зайди да проверь. Не лагает настолько, что пара секунд задержки на обсчет взрыва теперь называется "ПОВИДЛОМ".

Скопировать ссылку

Обратно в Кодинг