> Ну вот откуда такой параноидальный страх раскрывать свои идеи?
Эх, ну вот в том-то и дело, что идея далеко не гениальна и часть её, можно сказать, на поверхности лежит. Что до реализации, тут да.. даж я - любитель поманьячить над трудновыполнимыми вещами - со страхом смотрю на некоторые аспекты. оО Но всё же сижу как Кощей, трясусь, как бы кто идейку-то не угнал))
> люди обладающие соотв. скилом просто паталогически порядочны в большинстве своем (из собственного опыта)
Вот это заставило задуматься.
"А ну его нафик, выложу. Будь что будет, серано не сделает никто, мб я в том числе.."))
Что меня на нижесдедующие размышления натолкнуло, так это картина "стена дождя, неотрывно следующая за плеером, как приклеенная". В живую не видел, но представил довольно живо)) Это если партиклы будут падать в пространстве системы, а не мировом. Если же "отпускать" частицы в ворлдспейс, то при движении игрока по горизонтали они просто не будут успевать долетать до него. Со снегом дело обстоит ещё хуже: падает медленно, отдельные частицы гораздо более заметны.
Решение родилось почти сразу, и изъянов я в нём не заметил ("очень часто за собой не замечаешь тех ошибок, которые другой человек находит за пол-секунды"
). Партикли должны падать в пространстве системы, сама она - двигаться вместе с плеером, но наклоняться в сторону движения так, чтобы образовывалась горизонтальная составляющая скорости частиц, равная горизонтальной скорости плеера. При большой скорости система будет почти лежать, и, возможно, скорости частиц не будет хватать. Придется её как-то увеличивать.
Это была та самая простая часть, лежащая на поверхности. Дальше идут хаотичные размышления на предмет просчёта столкновений.
Вариант с расчётом коллизии для каждой частички отваливается сразу. Замечали как фреймрейт падает, если в Портале в течении некоторого времени пострелять во что-нибудь портало-несовместимое? Рожается фонтанчик из нескольких
десятков частичек, сталкивающихся
только с миром. В хорошем дожде (можно считать таковым дождевую системку, валяющуюся в эп2, и продемонстрированную в бенчмарке) этих частиц, емнип, 6к (прописью:
шесть тысяч) если не больше, которые, кстати, ни с чем не сталкиваются, а просто умирают, долетев до низа системы. А вы говорите..)) По всей видимости, придётся делать не более сотни больших спрайтов, для которых включить честные столкновения, и делать группу всплесков в местах попадания. А, собственно, частички будут изображаться на этих спрайтах любым способом, который может взбрести в голову. От анимированных 2д-текстур до шейдеров с использованием трёхмерных, в объём которых вкраплены снежинки/капельки.
Но можно пойти ещё далече. Забыть вообще про просчёт столкновений трассировками и рендерить всё имеющее значение для столкновений в "глубинную" текстуру (по принципу фонарика, но ортогонально), которую в дальнейшем юзать в каком-то мегакомплексном прост-процессинговом шейдере для рисования всплесков.
Были ещё размышлизмы насчёт использования для рисования снега затайленой 3д-текстуры, скролящейся соответственно скорости игрока + вертикально. Вообще без базовой геометрии типа спрайтов, а по принципу много-многократного сэмплинга текстуры в глубину. Арифметика подсказывает, что если делать это на четверти экранного разрешения (400х300 при 1600х1200 напр.), можно позволить себе сотню-полторы сэмлов на пиксель.. Низкое разрешение компенсировать какими-нибудь шумами в экранном пространстве. Разрешение текстуры тоже вроде палок в колёса не ставит: вес монохромной (не помню, позволяет ли сорс юзать < 8 бит на канал) несжатой текстурки размером, скажем, 256х256х128(думаю, должно хватить) всего 8 метров. Но этот абзац на самом деле бред, знаю сам, можете не говорить. =)
Вот
кратенькое мыслеизлияние.
База, база...
Имхо только подкормка для копипастеров) Настоящие прогеры настолько суровы, что плюют на чужие, никем не проверенные наработки и пишут свои
спагетти)))
"Маленький" примерчик.
И я почти уверен, выложи я свой вариант, в нём бы любой профи ноги переломал, отплевался бы и закрыл нафиг) (Не, ради бога, кончено. Я всегда готов доказать небессмысленность своего ника.
) Ибо хорошей организации кода учиться надо не меньше, а то и больше, чем собственно языку.
Кстати о языках. Комментарии порой важнее кода. Порой просто нечего сказать, но когда ты готов рассказать целую историо о коде, ты упираешься в языковой барьер, только язык тут - английский) Писать на великом и могучем? Сразу нафиг, иначе этот коммент для комрада за бугром будет не более полезен, чем ASCII-арт..
Так, терь 2Фиш)
Баллистика. Гы. Проблема действительно вселенского масштаба, и она знакома всем и каждому: отвращение к рутине. Всё, что было интересного, было написано в первые
часы + в течение нескольких дней за все эти месяцы. Остальное - копипаст и адаптация вальвовского кода, который надо дебажить, а у меня рвотные позывы начинаются, когда я вижу, что движок не считает геометрию func_detail за солид, и я понимаю что надо искать, почему это происходит и главное - что, видимо, придется добавлять ещё один особый случай для пробивания детейлов (их уже 4 - для солидов, энтитей, воды и диспов). (Эт только пример.)
Не то чтобы я плакался в жилетку.. Переживу, справлюсь) Просто раз уж разговор зашёл.
Что до экономичности, то всё ещё рано чё-то прогнозировать. И вообще, то что пули щас тормозят это далеко не главная пролема, оптимизация как раз довольно интересна) См. выше, в общем)
И теперь к отчётам)) Последние две недели я, как и обещал, приемущественно потратил всё что угодно, но не на пули)) Разбирался с базой для наших стволов, чтоб не копипастить код из одного в другой. Поудмал, как лучше конфигурировать боеприпасы вне кода и пришёл к выводу, что конфиги в формате KeyValues сосут; вполне вероятно, что воткну максимально облегченный луа (хотя чё его облегчать.. в памяти - как одна текстурка), благо плёвое дело. Потом меня повело в сторону и я ушёл в эти.. как их по-русски-то.. оО Игровые правила, короче) Чтобы всё-таки отделаться от привкуса хл2. Сделал только заготовку, ничем конкретным пока не заполненную, но и на это полдня ушло. Недавно заглянул в устройство худа (который для меня был настоящим тёмным лесом!), вроде не всё так страшно, попробую поковыряться. Воот...
Большую часть времени (процентов 75-80) даже не на кодинг уходит, а на изучение существующего кода и нахождение "дырок", в которые можно воткнуть свой креатив.. И это сильно утомляет, в итоге постоянно отвлекаешься на что-то более привлекательное. Последние два дня, для примера, я вообще дурью маялся - крутил брашевые колонны и гонял в audiosurf.
> Есть ещё две стороны этого вопроса ...
Нухз, острой постребности в помощи не ощущаю, ибо главная-то проблема не непонимании/неумении, а в нежелании. В итоге, если я и обращусь, к примеру, к Климу, я не смогу задать конкретного вопроса, ибо нет его, а тупо выложу такую вот кипу текста и скажу "ну и чё делать?". Не хочется вешаться на шею, сам знаю как это достаёт..
Вопчем, тоже высказался, блин.
зы: Вариант с жёсткой расстановкой брызг мапером мне не совсем (вернее совсем не) по душе. Во-первых гемор, во-вторых любая неровная поверхность - это ещё килограмм гемора в довесок, и в-третьих - полная статичность..
----------------
Кстати, о помощи)) Клим, есть у меня один тупняк, прямого отношения к OBA не имеющий, но тем не менее..
Пытался откомпилить врад, а затем и вбсп (в оригинале, ничего не меняя). Компилится на ура, а при линковке начинается град из сотен unresolved external symbol. По крайней мере часть из функций принадлежит tier1, либа которой в проект включена (путь проверил - ок). О_о Сначала грешил на саму студию, что та командную строку корёжит. Проверил, чего там скармливается линкеру - tier1.lib на месте и в начале списка, перед объектными файлами. Для верности откомпилил батником (теми же компиляторами от VS 2005 Express), с тем же итогом... С vbsp всё так же, но игровые дллы прекрасно линкуются, используя те же либы и - насколько я смог сравнить - те же параметры. Внимание, вопрос:
WTF?
Есть бредовая (непроверенная) теория, что код компилится как C, и имена в итоге не совпадают.