пятница, 24 июля 2015 г.

О срывах

Кажется, я опять немного сорвался со своего режима. Все дело в подлом программировании, которое иногда способно вызвать желание играть в игру "еще одна идея относительно этого и все". Мне все-таки захотелось проверить, можно ли в кубическом мире достаточно быстро обрабатывать глобальные процессы, не загружая весь мир поблочно в память. Почему нельзя загрузить? Ну, возьмем, например, такую планету, как Земля. Она имеет радиус около 6 тысяч километров. Это значит, что если мы хотим ее превратить в кубики, получится порядка 40*20*6 миллионов кубиков, без учета атмосферы. То есть, очень большое число, порядка триллионов. Если даже хранить блок как один байт, требуется терабайт с копейками, без учета всяких там структур данных. Сгенерировать его - я, полагаю, в зависимости от алгоритма, дело многих часов, может даже дней. Просчитывать его изменения с точностью до одного блока - невозможно в реальном времени. Идея была в том, чтобы проверить, насколько правдоподобную картину можно получить, если, скажем, генерировать и считать все большие и большие блоки по мере удаления от наблюдаемой игроком точки. Начал, конечно, с двухмерного мира, который имеет просто блоки километр*километр, то есть, в тысячу раз уменьшил Землю. Просто для удобства. И тут началось. Вроде бы все было идеально продумано, но где-то влезли какие-то, видимо, недостаточно хорошо обдуманные баги и пока что не получилось ни шиша. То есть, вроде-бы все работает на этапе рассчетов и весь мир успевает "тикнуть", без рассчетов и прочих операций, за десятки миллисекунд, на жаве, но отобразить его кусочек пока не получается. Где-то косяк с "взять вон тот блок с этими вот координатами". Хотя, конечно, и десятки миллисекунд это много. Еще и в двухмерном варианте. В общем, пока разочаровываюсь в идее, поэтому, видимо, так сильно залип в проблеме. Даже вот сюда ничего не писал. Хотя подход сначала казался очень правильным и даже казалось, что он офигенно должен масштабироваться, как на отдельные потоки, так и на разные процессы и даже физические машины. То есть, такой мир можно было бы размазать на целый кластер серверов и пускать игроков толпами. Но что-то, похоже, будь все так просто, это давно уже сделали бы.

На самом деле это важно, вовремя останавливаться и переключаться на другую деятельность, чтобы она не страдала. Работа та же. Летсплей. Обучение. И еще одна проблема - я эту задачу никак не разбил на части, она никак не спланирована и даже каких-то идей, которые возникли по мере попыток ее реализовать, я не записал. То есть, все потеряно. Хотя идей было много, и часть из них может быть полезна даже для других каких-то проектов. Вообще привычка это все записывать и обрабатывать у меня, похоже, развита не очень хорошо, потому что такое бывает часто. И не знаю, что с этим поделать, потому что это скорее касается самоконтроля и привычек. Менять и прививать новые привычки у меня пока получается плохо. А может просто очень неудачно реализован функционал добавления новых задач в текущем софте, ведь MLO написан под винду и что-то не спешит ловить нажатия хоткея, когда не активен. И иконку в трее не всегда делает. В общем, дело дрянь. Надо привыкать натыкивать новые задачи в андроиде, что не всегда удобно.

1 комментарий:

  1. Casino No Deposit Bonus Codes 2021 | Play Online Free
    No deposit casino 양산 출장마사지 offers you all 전주 출장마사지 the rewards and promotions you would expect from a traditional 부산광역 출장안마 casino, plus more. The best 울산광역 출장마사지 part is, they offer you 경상북도 출장마사지 one of

    ОтветитьУдалить