All streams
Search
Write a publication
Pull to refresh
24
1.3
Костромин Кирилл @SadOcean

User

Send message
Более того, несмотря на то, что случился C# и это очень хорошо, с джавой тоже все очень даже неплохо.
В этом смысле даже котлин воспринимается, как позитивная тенденция мира джавы.
Именно.
А уж мастер/слейв к этому имеют еще меньшее отношение.
Справедливости ради, рабство — актуальная мировая проблема.
Разумеется речь про рабство в странах третьего мира и определенную категорию безусловно преступлений, типа «сексуального рабства».
Но естественно речь идет о реальных проблемах, и, подозреваю, что контрибьюторы го исправлению проблемы не помогают
Если воевать с рабством — наверное можно победить рабство.
Но если воевать со словами — то можно победить только слова.
А ведь если все делать правильно, то эти слова так и останутся лишь компьютерными терминами.
Всегда приятно находить такие мелочи.
Креативненько
Есть поддержка даблов вроде в свежих шойдерах от нвидии, но под рендер все равно все заточено под флоат.
Но с другой стороны — вы же все равно на миллион километров не смотрите, почему бы не рендерить с центром в начале координат?
В блоге Space Engeneer (автор космического планетария Space Engine) есть статьи про то, как он решал схожие проблемы. Для масштаба от камней до галактик дабла тоже не хватает — он собирал приемы относительных центров координат, рендер камеры со смещаемым фрустумом (чтобы рисуя 3 планеты, использовать большую часть точности именно на z-test планет, а не на пустой космос между ними) и прочие хаки.
Ни с какого, но теперь ведь его развивает MS, им виднее)
coub.com/view/19b0p3
Немного попахивает демагогией.
Вопрос в том, что вы понимаете под субъективным опытом и существованием в прошлом.
В ваших терминах нет, не может. Могут быть только последствия процессов и текущие процессы. Процессы, происходившие в прошлом тогда — просто удобная абстракция для описания последствий, существующих сейчас, с которыми взаимодействуют текущие процессы.
В этом смысле, субъективный опыт как информация о пережитом будет существовать в прошлом — процессы, формирующие структуры, в которых записана эта информация уже прошли и мы имеем дело в основном с их последствиями.
Но субъективный опыт как процесс сознания существовать в прошлом не будет — он будет существовать в процессах, происходящих сейчас. То есть когда основываясь на предыдущих записях (память) по определенным правилам (связи) кто-то делает новые (реакция) — вот тогда и существует. В полном соответствии с вашим описанием — на гребне временной волны.

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

Миллион человек (или один человек) в разное время обрабатывает вводные на миллионе страничек, записывая данные в них по определенным правилам на эту и соседние странички. Страничка 1 отделена от странички 500 как минимум 500 переписываниями, но это не мешает каким то данным с 1-ой попасть на 500.
Когда до 500 странички, на которой складывается «Эврика!» через 450+Х шагов доходит информация о том, что задача на страничках 42-56 решена и расписана, никаких действий над этими страничками не производится, и с точки зрения 500 странички «знание ответа» — это просто иллюзия, которой 500 страничка доверяет.
В этот момент на основе этих данных просто записывается «эврика» на 500 страничке и это является субъективным переживанием бумажного мозга. Но с точки зрения всей системы, всех страничек, он действительно знает ответ — при необходимости при последующих переписываний как данные про эврику, так и само решение задачи может быть переписано в любую его часть или выведено наружу.
То есть сознание не одномоментно и не сосредоточено в одном месте, только и всего.

По поводу явлений вопроса не понял. Опять же, вопрос терминологии. Если отталкиваться на ваши терминах — нет, таких явлений не существуют, только те, которые происходят сейчас. Но они разные и часть из них хорошо объясняется в терминах результатов предыдущих явлений, и с этой точки зрения мы говорим об текущих явлениях как о происходящих сейчас и произошедших ранее, о которых мы знаем по другим, происходящим сейчас.
Счет в банке в прошлом изменить не получится, но вот в остальном действия с банком хорошо коррелируют — если у вас лежало 100 рублей, вы сняли 80, то останется лежать 20 — это будет одинаково хорошо работать в прошлом, если вы переводите 80 рублей прямо сейчас, как и в будущем.
Так же это неплохо работает в вашем мозгу при моделировании.
Спасибо, очень интересная статья, хотя подробностей и маловато.
Не знал, что Раст и на nes умеет
Может и на другие консоли?
Ну что значит не делал.
Конечно делал.
Там были военные авиабазы и государственные лаборатории (впоследствии — лаборатории NASA).
Стэндфордский университет основал офисный кластер, который стал удобным стартовым полигоном для студентов.
Государство довольно долго это финансировало — после войны туда вливались миллионы долларов в передовые по тем временам проекты американской электронной промышленности — радары, радио, связь, авионика, системы управления, с ними связана история некоторых частных кампаний.
После изобретения транзисторов это место стало центром полупроводникового производства — там с 50-х годов было много специалистов по электронике, их семей.
Естественным образом на этой благодатной почве — большая концентрация специалистов, близкое расположение всех субподрядчиков и производителей компонентов начинают появлятся новые частные фирмы и производители.
Но только в 70-х частные инвестиции в местные предприятия начинают превышать государственные заказы.
Мне кажется, что тут есть 2 серьезных проблемы в рассуждениях:
— Странное пренебрежение временем
— Требование мгновенной связи (и на самом деле — требование точечной локализации)

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

Про локальность.
Есть целый ряд экспериментов, показывающих реакции мозга на раздражители, осознанность действий и то, как выглядят разные действия с точки зрения активности зон мозга. Например, есть эксперимент Либета. Есть хорошие лекции на ПостНауке от нейрофизиолога (к сожалению, забыл фамилию), где рассказывается про интересные особенности и нарушеня в работе мозга.
Все они говорят о том, что как раз таки целостность и единовременность сознания — вот настоящая иллюзия. Нет единой точки сборки, нет одновременности, нет центра принятия решений. Специализированные части мозга дико лагают, доставляя до центров активности устаревшую информацию от зрения. Решения о движении руки буквально может быть принято центрами мозга, ответственными за руку, а потом рационализировано и постфактум поправлено другими центрами. Есть хитрые механизмы, разбирающие картинку, а потом «придумывающие» ее. Глаз вообще довольно плохой с точки зрения «харда» и работает круто за счет прокачанного софта, который доделывает HD картинку. Многие решения буквально проводятся «голосованием» разных отделов мозга. Все отделы, ответственные за движения, хорошо умеют компенсировать лаг и вносить поправки, благо по сравнению со скоростью прохождения импульсов в компактном мозге скорость реального мира не очень велика. При этом да, мозг на самом деле действительно очень сложен и крут и действительно содержит большой, объем субъективных воспоминаний в «горячем» кеше. Но супер сложностей тут нет, этот процесс хорошо распараллелен по миллиардам нейронов.
Даже сознание, как самое яркое пятно в мозге, только подсвечивает громадную работу разных отделов мозга, само, на самом деле, не то чтобы принимает серьезные решения.
Но для нас очень круто создает иллюзию плавности и бесшовности, которой объективно не существует.
Вроде нет никаких противоречий в таком бумажном сознании, с точки зрения его субъективного опыта оно будет существовать.
Главное в нем — наличие процессов мышления — связей и реакций.
Так рабочий и решает проблемы бизнеса, просто самые базовые.
Не факт, что это сделано реально — такого эффекта можно было бы достигнуть, выложив монеты сеткой, потом нарезать на большое полотно пикселей (части фотографий, на которых включены/выключены монеты) и программно анимировать.
Выглядит логично, особенно учитывая, что если бы это делалось руками по рисункам, а все таки выстраивалось по сетке.

Но все равно симпатично, конечно.
Вроде не глупый, вроде с задачами справляюсь и даже пытаюсь что-то мутить.
Вроде даже неплохо получаю, вроде даже подчиненные есть.
Интересно, Я сениор?
Пойду дальше пилить.
Мда.
Я как то тоже думал больше узнать про принципы и прикладные свойства, а тут странная реклама.
У нас есть опыт написания M3 игры на Entitas и они довольно специфические. Но это точно не похоже на спасение мира.
Конечно, адепты пишут, что нужно немножко сломать мышление, а потом будет красиво, легко и приятно. И в вашем проекте теперь даже есть архитектура, ха-ха.
Но:
— Теперь ваши сущности расползаются по наборам параметров и операций между ними. Чтобы собрать точное поведение сущности (например, юнита) нужно доставать куски из кучи систем и выстраивать их логику по кусочкам.
— Связи между сущностями выстраиваются специфически, данные-сигналы и данные-флажки — не самое удобное решение для многих очевидных вещей, многие паттерны очевидно не столь удобны, какк классические ООП и функциональные решения.
— Вранье, что человек думает батчами объектов (та самая аналогия, что хлеб мол не режут по кусочкам, а сразу весь батон шинкуют). Так конечно можно думать и в некоторых случаях это удобно, но любая декомпозиция сложного поведения как раз заключается в том, что ты думаешь об операциях с точки зрения одного простого и понятного объекта/агента, и думаешь всю цепочку. А не размышляешь о парралельном шаге для трех тысяч человек (хотя они конечно происходят одновременно.
— Сам по себе подход не избавляет от продумывания сущностей и дисциплины. Тебе все равно нужны понятные сущности, понятные правила, понятные способы взаимодействия. Особенно если пилит команда — нужно все равно продумывать архитектуру взаимодействия сущностей. Иначе ты ровно одинаковым способом выстрелишь себе в ногу с любой парадигмой — функциональной, компонентной, ооп или ECS. Только в отличие от старых подходов для этого еще нет устоявшихся паттернов и инструментов. Есть удобные кнопки IDE «показать вызовы функций» и «показать диаграмму связей», но нет инструмента «показать последовательность обработки данного компонента всем списком систем». А было бы крайне полезно.
— Большой плюс, он же и минус — отсутствие элементов защиты, все данные доступны, нет вариантов разбить по доменам или группам нормально (типа private перемнных). С одной стороны удобно — можно легко укусить локоть, с другой стороны, нужно потом разбираться в механиках кусания локтей.
— Гиганский плюс — явный стейт, все ключевые элементы игры выделены, можно легко сериализовать, передавать и принимать стейт, ничего не поплывет и не поломается из-за ошибки в цепочке делегатов ну и т.д.

Как итог — это просто совершенно не серебрянная пуля.
Есть большое количество вариантов, когда плюсы будут перевешивать минусы, или на ECS может быть сделана крупная игровая часть (например, сетевой шутер), требовательная к производительности или со специфическими требованиями к хранению состояния.

Спасибо, отличная статья.
Мне кажется, тут неправильно определен термин «игровой цикл». Ведь он достаточно широко используется.
Игровой цикл — это типичный набор механик, которые игрок использует в игре регулярно, достигая определенного результата.
Безотносительно времени.
Цель — действие — результат — повторить.
  • Прицелился — выстрелил — убил врага — ищи следующего. (5 секунд)
  • Вошел в комнату — убил всех монстров — собрал весь лут — нашел ключ — прошел в следующую (5 минут)
  • Прошел 10 комнат — получил новый уровень — прокачай персонажа (50 минут)

Для хорошей игры важно наличие вложенных игровых циклов. Неинтересно просто стрелять в монстров. Так же, как и неинтересно по 50 минут заниматься скукотой, чтобы получить новый красивый уровень и перки.

В сложных играх (например, цивилизация) могут быть сразу несколько игровых циклов разной длины, идущих параллельно
  • ты решаешь рутинные дела — строишь здания и шахты (в рамках 1 хода)
  • отбиваешься от пришедшего с севера отряда варваров (3 хода)
  • споришь с соседом за дипломатическое влияние над нейтральным городом (10 ходов)
  • исследуешь цепочку технологий, которые дадут порох (18 ходов)
  • готовишься к нападению на соседа по морю на восточном побережье (25 ходов)
  • строишь из города крепость (набор зданий на 35 ходов)

Все они являются своим набором механик, которые имеют свою цель, но встроены в игру. Игрок ощущает удовольствие от контроля всех этих штук.

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

То есть совет должен звучать так — следите, чтобы в вашей игре было достаточно интересных циклов, перекрывающих игру на всех промежутках.
Не забывайте про базовые игровые циклы, делая большие и комплексные циклы.
Нюансы.
Если человек скажет что-то в стиле «Ну, навскидку, нужно поделить на все числа от 2 до (n-1)/2… Но это неоптимальное решение, наверняка можно оптимизировать, проверив… А вообще Я бы пошел в гугл искать существующие алгоритмы...»
И при этом покажет хорошие знания в других областях — конечно было бы здорово его взять.
Несмотря на то, что формально кандидат написал только вот такое неоптимальное решение.

Так то Я считаю, что программист должен уметь производить исследование и заниматься инженерией — целенаправленным дизайном алгоритма решения конкретной задачи в классическом смысле слова «алгоритм».
Другое дело что даже сходить за хлебушком — тоже алгоритм, дело в сложности.
Нельзя доверять коду, который вы не написали полностью сами.
Тому коду, который сам написал, тоже сильно доверять не стоит.

Information

Rating
1,462-nd
Location
Ставрополь, Ставропольский край, Россия
Date of birth
Registered
Activity