Дневнички

Ответить в тред Ответить в тред
- Аноним 08/02/20 Суб 21:50:05 3386601
ø.jpg 67Кб, 488x381
488x381
Вообще забей.
08/02/20 Суб 21:54:24 3386632
Пьюдипай уже несколько недель как свалил в отпуск и теперь мне ничего не остаётся кроме как смотреть видео с майнкрафт батл роялем.
https://youtu.be/Mg6n3TBeQ3Y
Их много, они все одинаковые и их легко смотреть.
08/02/20 Суб 22:07:53 3386703
В интернете вообще какая-то нездоровая атмосфера везде в популярных местах. Вот даже гуфовский, который обычно стримит квн и милые забавные игры, зачем-то не так давно застримил шоу с телека, как кто-то там забеременел, а потом ещё отсмотрел какой-то странный русский фильм. Но он вроде уже исправился, сегодня стримил какую-то игру, я ещё не смотрел, правда.

А в непопулярных местах я даже не знаю, что делать. Гораздо лучше находиться в толпе, в которой ты плывёшь как по течению, чем идти куда-то самому. Только вот сейчас толпа идёт куда-то совсем не туда, куда бы мне хотелось, поэтому я сижу и жду, пока это всё прекратится.
08/02/20 Суб 22:17:39 3386754
ø.jpg 35Кб, 620x347
620x347
Я так завидую всем людям, они хотя бы что-то из себя представляют обычно, у них есть какие-то интересные увлечения, в которых они преуспевают, потому что им нравится ими заниматься, и они делают это в своё свободное время, а я просто пустое место, и никогда не смогу никем стать, потому что упустил все возможности и у меня слишком мало ресурсов: во мне просто нет ничего хорошего, не за что уцепиться.

Ко всему прочему я чувствую, что я просто почти неосознанно мимикрирую под других людей, при этом сам я человеком не являюсь, во мне нет ничего своего, всё - попытка скопировать откуда-то. Но все эти попытки делать так, как делают другие, оканчиваются неудачами, потому что я бесполезен.
08/02/20 Суб 22:30:18 3386805
ø.jpg 75Кб, 640x480
640x480
Уже несколько недель живу без виндовса, потому что он перестал запускаться. Изначально я установил линукс минт параллельно с виндой, но почему-то при загрузке перед тем, как открывался grub, открывался какой-то другой загрузчик, в котором можно было выбрать между виндой и грубом. Я его убрал через какое-то приложение на винду, чтобы остался только grub, через который я мог бы загрузить и винду, и линукс, но после того, как я это сделал, через grub перестала запускаться винда, только линукс.

И вот не знаю, что делать, потому что при попытке загрузить винду через grub просто появляется чёрный экран, а потом опять появляется grub. Всё хочу попробовать починить, но не знаю, как гуглить эту проблему. Видимо, надо с установочного диска виндовс зайти в командную строку и там что-то сделать, чтобы всё вернуть, но я не знаю, что туда надо вводить.
08/02/20 Суб 22:35:42 3386816
ø.mp4 2660Кб, 480x600, 00:00:29
480x600
Наверное, пойду чего-нибудь поем, а потом попробую поделать что-нибудь, но пока что не знаю, что конкретно. Вообще это большая проблема - то, что я не знаю, что хочу делать, поэтому я не могу поставить себе никакую цель, я не знаю, к чему стремиться, потому что всё выглядит либо слишком сложным, либо неинтересным, либо бессмысленным.

Дикдики выглядят забавно.
08/02/20 Суб 23:42:09 3387157
ø.mp4 1153Кб, 1280x720, 00:00:11
1280x720
Что-то поел, на час залип на что-то в интернете, уже даже не помню, что я смотрел. Вот так всегда. Сейчас, думаю, буду что-то пытаться делать и параллельно смотреть какой-нибудь мультик.
09/02/20 Вск 00:58:28 3387488
Не выходит, ничего не выходит.
09/02/20 Вск 03:39:48 3387709
ø.png 272Кб, 701x478
701x478
Всё как обычно, опять ничего не вышло, я изначально делал не то, что надо было делать, я бесполезен. Но по крайней мере теперь я примерно представляю себе, что мне надо было бы делать. Закончу как-нибудь позже, наверное, а пока что надо делать дальше что-то другое, потому что нельзя подолгу останавливаться на одной вещи. Пойду спать.
09/02/20 Вск 13:21:02 33882010
ø.jpg 155Кб, 1600x1200
1600x1200
Проснулся где-то полтора часа назад, не знаю, что делать теперь. Не понимаю вообще, зачем я существую, лучше бы меня не существовало. Не хочу ни играть, ни смотреть мультики, вообще ничего не хочу делать. Наверное, всё же буду что-то полезное делать, хотя у меня такое ощущение, что это всё бессмысленно.
Аноним 09/02/20 Вск 13:54:48 33882211
>>338820
После 18 вся жизнь как день сурка, в котором ты пытаешься совершить революцию.
09/02/20 Вск 14:00:10 33882712
>>338822
Я не знаю, что такое революция, я не хочу ничего совершать и не пытаюсь, я хочу навсегда заснуть и больше не просыпаться.
Аноним 09/02/20 Вск 14:03:47 33883013
>>338827
Ну, ты всё равно по итогу будешь продолжать бытность в своём дне сурка, фильм очень хорошо отражает жизнь на самом деле.
09/02/20 Вск 14:08:42 33883314
>>338830
Я уже не помню, о чём был этот фильм. Я помню только, что там в конце гг купил какую-то женщину, и всё прекратилось. Не знаю, какие тут скрытые смыслы и что это отражает, да мне и неинтересно.
Аноним 09/02/20 Вск 15:16:11 33884915
3960901.jpg 57Кб, 600x450
600x450
>>338833
В фильме челик проживает один и тот же день, используя все возможности своего положения: пикапит телок, устраивает погони с полицией (живет угаром и духом молодости), безуспешно пытается суициднуться, в итоге начинает удовлетворять потребности перфекционизма (желание иметь возможность вернуться в прошлое и все сделать правильно), выучивается играть на пианино аки бог, даёт концерт в местном зале, учится скульптуре, спасает падающего с дерева пацаненка, расчитав тайминги, налаживает отношения с еот и все такое прочее. Не хочу навязывать свое видение, но мне сама концепция цикличного проживания одного дня представляется аллегорией на жизнь любого обывателя, который тоже в определенный момент экзистенциально заебывается от ощущения, будто живет не своей жизнью, а со временем и от нигилизма, и хочет какой-то определенности в своих поступках и желаниях, какой-то правильности, понимания, вместо томного ожидания будущего зацикливается на прошлом, увязнув в настоящем
09/02/20 Вск 16:50:11 33887616
>>338849
Мне сложно думать о желаниях других людей, когда у меня толком нет своих.
09/02/20 Вск 16:56:20 33888017
ø.jpg 75Кб, 1280x720
1280x720
В этот раз получилось получше позаниматься, по крайней мере я не дропнул всё, столкнувшись с первой же трудностью, а разобрался до конца. Но я всё равно сделал слишком мало. Пойду что-нибудь поем, наверное, а потом, может быть, поиграю во что-нибудь или продолжу пытаться заниматься.
09/02/20 Вск 17:05:53 33888418
ø.png 211Кб, 500x413
500x413
Я не чувствую, что информация оседает у меня в голове. Такое ощущение, я просто пропускаю её через свою голову, осознаю, но после этого ничего не остаётся. Не понимаю, что мне делать с этим.
09/02/20 Вск 19:27:03 33893519
ø.png 1493Кб, 1165x899
1165x899
Ни во что не играл и не занимался. Но немного освежил в памяти кое-что из пройденного материала и сделал небольшой конспект по теме, которую повторял. На самом деле, в этом не было особого смысла, потому что тема простая и я её знал, но теперь, когда по ней есть конспект и я в любой момент могу его перечитать, я чувствую себя увереннее.
09/02/20 Вск 19:30:30 33893620
ø.png 97Кб, 400x400
400x400
Думаю, сейчас буду играть в майнкрафт.
09/02/20 Вск 19:37:29 33894221
ø.png 1120Кб, 1920x1080
1920x1080
Буду играть на хард сложности просто в ванильный. Специально поставил низку дальность прорисовки, чтобы всё выглядело немного как в тумане.
09/02/20 Вск 19:59:35 33894622
2020-02-0919.57[...].png 578Кб, 1920x1080
1920x1080
Хотел попытаться успеть за ночь построить домик, но не успел. И к тому же не хватило камня, чтобы сделать второй этаж. Так что пришлось поспать ближе к утру, чтобы поставить спавн поинт.
09/02/20 Вск 20:06:02 33894823
2020-02-0920.05[...].png 660Кб, 1920x1080
1920x1080
Недалеко от дома, ориентируясь по страшным звукам случайно раскопал заброшенную шахту.
09/02/20 Вск 20:20:37 33895024
2020-02-0920.19[...].png 796Кб, 1920x1080
1920x1080
Отошёл от заброшенной шахты, углубился вниз и нашёл озеро лавы.
09/02/20 Вск 20:37:27 33895825
2020-02-0920.36[...].png 1065Кб, 1920x1080
1920x1080
Нашёл расщелину. Почти закончилась еда, осталось только зомбячье мясо и пара кусков курицы, а я нашёл всего лишь один алмаз и железа не то чтобы очень много добыл. Если сейчас здесь не найду алмазов, то придётся выкапываться наружу.
09/02/20 Вск 20:40:30 33896126
2020-02-0920.40[...].png 1091Кб, 1920x1080
1920x1080
О, нашёл ещё немного.
09/02/20 Вск 20:43:39 33896527
2020-02-0920.41[...].png 711Кб, 1920x1080
1920x1080
И, видимо, ещё чуть-чуть. В итоге получилось 11. Но мне, на самом деле, хватило бы и пяти штук: 3 на кирку и 2 на стол для зачарований. Сейчас выкопаю обсидиан и пойду выкапываться уже точно.
09/02/20 Вск 20:55:13 33896928
2020-02-0920.54[...].png 323Кб, 1920x1080
1920x1080
Дошёл до дома.
09/02/20 Вск 21:32:31 33898829
2020-02-0921.31[...].png 1278Кб, 1920x1080
1920x1080
2020-02-0921.30[...].png 594Кб, 1920x1080
1920x1080
2020-02-0921.26[...].png 779Кб, 1920x1080
1920x1080
Достроил дом. Что-то такое получилось с крыльцом и балконом. На втором этаже просто сундуки поставил. Наверное, хватит на сегодня играть в это.
09/02/20 Вск 22:23:16 33900030
ø.jpg 36Кб, 420x480
420x480
Немного отдохнул, не помню даже, что делал, наверное, лежал или ходил по дому. Минут через 10 сяду заниматься.
10/02/20 Пнд 03:06:48 33907331
ø.jpg 32Кб, 640x440
640x440
Я пытался заниматься, но едва ли продвинулся, потому что параллельно с этим слушал музыку и смотрел мультик.
10/02/20 Пнд 18:18:41 33924032
ø.jpg 168Кб, 1920x1080
1920x1080
Думаю, сейчас буду играть в майнкрафт. Пока что не знаю, что буду там делать, может, попытаюсь, что-нибудь построить.
10/02/20 Пнд 19:02:08 33925933
2020-02-1018.58[...].png 641Кб, 1920x1080
1920x1080
Хотел пройтись по окрестностям, чтобы найти что-нибудь интересное или как минимум выбить картофелину из зомби, но меня прикончил скелет. Хотел вернуться обратно, чтобы забрать все вещи, но ничего не нашёл, заблудился и еле-как вернулся домой, побежав просто в случайном направлении.

Обидно немного, что потерялись куча уровней и сет железной брони, а ещё, что я потерял слизь (хотел сделать поводок, чтобы притащить к себе поближе куриц, но, видимо, придётся использовать старые методы).
10/02/20 Пнд 19:36:31 33926934
Надоело играть. Не хватает терпения собирать ресурсы, слишком лень этим всем заниматься.
Аноним 11/02/20 Втр 04:52:13 33938535
>>339073
чем ты занимаешься, что учишь?
11/02/20 Втр 13:41:33 33950936
ø.png 326Кб, 600x338
600x338
>>339385
Не хочу говорить. Я слишком близко к сердцу воспринимаю мнение других людей о себе, постоянно всё преувеличиваю и не переношу критику в свою сторону. И ещё меня очень легко сбить с пути, потому что я не знаю сам точно, что хочу делать.

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

Я просто не хочу давать лишней возможности сделать это.
11/02/20 Втр 13:52:53 33951437
ø.jpg 257Кб, 1280x2365
1280x2365
Я не понимаю, почему я постоянно чувствую себя плохо, почему время вокруг как будто бы постоянно ускоряется, я просто уже не замечаю, как проходит день. Почему я просто не могу хотя бы нормально учиться, сконцентрироваться хотя бы на этом, чтобы уже бороться только со своей тупостью, но мне постоянно приходится распыляться на несколько вещей.

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

Это всё отвлекает и изматывает, почему я должен этим заниматься. Почему мне так тяжело сконцентрироваться на чём-то.
11/02/20 Втр 14:57:34 33952838
И вот как можно жить, если только на то, чтобы помыться и собраться выходить на улицу, у меня ушёл целый час.
11/02/20 Втр 15:50:29 33953939
Ну вот, сначала ехать кучу времени, а теперь ещё стоять в очереди. У меня уже всё болит, не уверен, что вывезу такое. А потом же ещё обратно идти.
11/02/20 Втр 15:52:27 33954140
А, нет, освободилось место и удалось сесть.
11/02/20 Втр 18:47:26 33960741
ø.jpg 84Кб, 1200x673
1200x673
Пришёл домой. Нужного спрея не оказалось в наличии, да и мне, наверное, его бы и не продали, потому что у меня с собой не было рецепта. Придётся завтра опять идти в аптеку. Сейчас, думаю, буду играть в майнкрафт. Или нет, не знаю пока что.
11/02/20 Втр 19:56:05 33964542
2020-02-1119.01[...].png 1137Кб, 1920x1080
1920x1080
2020-02-1119.46[...].png 1466Кб, 1920x1080
1920x1080
Пришлось немного побегать, чтобы найти еловый лес и забрать оттуда несколько саженцев. На этот раз не заблудился, потому что взял с собой карту.

Сделал немного странный домик и мостик, чтобы можно добраться до него. Внутри пока что ничего не сделал, думаю, там будет стол для зачарований. Пока что опять надоело играть, потом как-нибудь продолжу.
11/02/20 Втр 21:19:50 33967543
ø.jpg 94Кб, 1200x675
1200x675
Не знаю, куда выпал прошедший час времени. Минут через 10 сяду заниматься, наверное.
Аноним 13/02/20 Чтв 17:38:12 34049944
>>339675
чем занимаешься?
14/02/20 Птн 18:18:59 34096745
2020-02-1413.09[...].png 1393Кб, 1920x1080
1920x1080
2020-02-1417.52[...].png 1123Кб, 1920x1080
1920x1080
Почти не играл в это, поэтому особо ничего нового.

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

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

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

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

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

Короче, не знаю, может быть, потом как-нибудь попробую сделать что-нибудь автоматизированное, а сейчас попытаюсь обойтись тем, что есть.

Да, железо, кстати, закончилось полностью, поэтому пришлось спуститься в пещеры, где я благополучно помер со свежесобранным железным сетом, кучей железа и гле-то с шестью алмазами. Откуда-то сверху прямо на меня спрыгнул крипер и по ощущениям прямо в полёте сдетонировал. При этом у меня был почти фул сет железной брони (без ботинок) и полное здоровье. Назад возвращаться я даже не пытался: всё равно бы не нашёл путь до разбросанных айтемов.

В следующий раз придётся идти с каменными инструментами и на месте всё крафтить, как будто бы заново с самого начала буду играть.
14/02/20 Птн 18:23:38 34097046
ø.jpg 117Кб, 1152x648
1152x648
>>340499
Да не то чтобы чем-то серьёзным, да я и не прогрессирую никак, так что какая разница.
14/02/20 Птн 18:48:00 34098347
https://youtu.be/9x9KUDGS8jw
А, ну хотя, оказывается, по крайней мере ферму тыкв и арбузов сделать довольно легко. Оказывается, если пушить тыкву или арбуз пистоном, то он ломается, так что можно либо сделать поток воды, в который будут попадать айтемы, либо снизу запустить вагонетку с хоппером. К тому же это будет довольно дёшево по ресурсам. Наверное, сделаю её потом и оформлю под какую-нибудь странную каменную постройку, а в амбаре оставлю только.

А для сахарного тростника я вспомнил, что есть zero tick фермы, суть которых, как я понимаю, в том, чтобы очень быстро дёргать блок, на котором растёт тростник, и тогда тростник будет расти значительно быстрее. Но это какое-то максимальное багоюзерство, так что я потом, может, сделаю обычную ферму. Она там, оказывается, такая же простая, как и для тыкв.
14/02/20 Птн 19:14:49 34100248
2020-02-1419.12[...].png 476Кб, 1920x1080
1920x1080
Нашёл подводную впадину.
15/02/20 Суб 03:07:41 34121849
2020-02-1422.52[...].png 1963Кб, 1920x1080
1920x1080
2020-02-1422.53[...].png 1074Кб, 1920x1080
1920x1080
2020-02-1502.00[...].png 1271Кб, 1920x1080
1920x1080
2020-02-1502.14[...].png 1306Кб, 1920x1080
1920x1080
Сделал какой-то то ли сторожевой пост, то ли наблюдательный пункт с двумя небольшими бастионами. И, потратив на это кучу камня, так и не придумал, как эту штуку можно использовать. Прямо за входом со стороны воды поставил портал в ад только. Может быть, заспавнятся зомби пигмены, и тогда можно будет представлять, что там расположились войска.

Всё же сделал ту ферму тыкв (вариант с вагонеткой с хоппером и одновременным срабатыванием всех пистонов). Вроде как работает, но довольно медленно (за минут 20 сгенерировала только 25 тыкв) и апдейтится она только, когда ты находишься относительно недалеко. (Ну, конечно, можно афк постоять и набрать побольше, но как-то лень таким заниматься. Может, надо сделать несколько таких ферм, но это долго и муторно) И очень дорого получилось из-за того, что надо проложить рельсы по всей площади снизу, даже с учётом того, что часть рельс я украл из заброшенной шахты. Но пока что никак её не оформлял. Думаю, просто засуну в дефолтный домик, только сделаю его Т-образным.

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

Вообще определённо надо зачаровать свои айтемы, хотя бы кирку на эффективность, но, во-первых, я так часто умираю, что не вижу особого смысла: всё равно потеряю, во-вторых, у меня пока что нет кожи, чтобы сделать книжные полки и улучшить зачарования (конечно, можно комбинировтаь зачарования: эффективность I + эффективность I = эффективность II, но для этого надо либо создавать кучу, к примеру, кирок, чтобы потом их зачаровывать и комбинировать на наковальне, а у меня опять закончилось железо, либо, зачаровывать книжки, которых у меня нет), а в-третьих, я не знаю, есть ли смысл зачаровывать железные инструменты: они же быстро ломаются, надо зачаровывать обязательно на анбрейкинг, а это минус левелы, а у меня левелов нет и я не знаю, откуда их взять.

После этого далеко ушёл от дома, хотел найти что-нибудь интересное (ледяной биом, чтобы потом забрать оттуда лёд / пустыню, чтобы фармить эндер глаза / джунгли для бамбука etc), нашёл только деревню и записал её координаты, чтобы потом вернуться и утащить оттуда жителей. Но потом меня взорвал крипер и я потерял все айтемы, в том числе картофель и морковь, которые я так долго искал, и ещё саплинги жирных тёмных деревьев и сколько-то кожи.

Так и не знаю, откуда брать левелы для зачарований. Есть вариант построить стандартную тёмную коробку в небе, из которой вниз будут падать спавнящиеся в ней мобы и почти убиваться, а я бы потом их добивал (если моб умирает сам, то опыт не дропается). И тогда можно было бы в том числе нафармить всяких предметов, но, мне кажется, я с этого мало получу опыта. Ещё можно бегать по аду (который у меня из-за пиратки неапдейтнутый и унылый) и собирать опыт с майнинга кварца, но это тоже как-то тяжеловато.
Аноним 15/02/20 Суб 04:07:00 34122750
KYLFKayQE8Y.jpg 112Кб, 604x604
604x604
>>341218
> И, потратив на это кучу камня, так и не придумал, как эту штуку можно использовать.
Поставь раздатчики и ловушки - возможно внутри будут спавниться мобы, которых ты таким образом убьешь.
Или сделай там склад оружия, припасов (стрелы, динамит).

>пока что нет кожи
Заведи ферму коров и размножай их. Советую прокачать меч на Добычу - будет падать больше кожи (и мяса).

>но потом меня взорвал крипер и я потерял все айтемы
Сделай эндер-сундук (2). Один поставь дома, другой таскай с собой и складывай туда весь ценный лут. Правда, придется таскать с собой кирку на Шёлковое Касание.

>откуда брать левелы для зачарований
1. Лутаешь кварц с ада
2. Торгуешься с жителями
3. Заводишь фермы животных и размножаешь
4. Спускаешься в пещеры и собираешь уголь, редстон, лазурит и алмазы.
5. Делаешь афк-рыбалку (норм способ, если уходишь куда-то)
6. Бродишь ночами или по пещерам и убиваешь монстров

>Есть вариант построить стандартную тёмную коробку в небе, из которой вниз будут падать спавнящиеся в ней мобы
Неплохой вариант, но следи чтобы под тобой внизу не было шахты. Вруби субтитры в настройках и смотри "Катится вагонетка". Если это выскакивает особенно в том месте, где ты хочешь построить коробку - не строй. Так как ниче не выйдет, все мобы будут спавниться в шахте. На себе проверено.
15/02/20 Суб 19:24:53 34143751
ø.jpg 35Кб, 600x800
600x800
Чего-то мне в майнкрафте совсем не везёт, пока что не буду в него играть больше. Устал от того, что каждый раз теряю все айтемы.

Оказывается, на столике картографа можно расширять карту только за один листик, поэтому я максимально увеличил масштаб карты и пошёл понемногу её открывать. Успешно реаибилитировался в плане ископаемых ресурсов: утащил довольно много железа и угля, апнул 30 лвл, но вот алмазов не нашёл. Нашёл относительно недалеко деревню, из которой утащил несколько книжек и картофель. Отметил её на карте, так что можно будет потом вернуться и выкрасть жителей (там она довольно удобно расположена около большого водоёма, из которого можно добраться до моего дома).

30 лвлов и 7 книжных полок хватило на то, чтобы сделать железную кирку на анбрейкинг 3 и эффективность 3, но я так её толком и не протестировал, потому что спалил её в лаве в аду, пока пытался найти там крепость.

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

>>341227
>Заведи ферму коров и размножай их
Да, я уже, но пока что там маловато коров, чтобы их можно было начать убивать.
>Сделай эндер-сундук
У меня какая-то беда с эндерменами: не хотят спавниться. В этом мире вообще видел только двух-трёх. В каком-то спидране майнкрафта я видел, как игрок сделал высокую башню посреди пустыни, а внизу сделал сетап, чтобы можно было удобно убивать эндерменов. И в самом верху он поставил спавн поинт. И ночью он забирался на башню, видимо, чтобы реролльнуть враждебных мобов внизу (как я понял, враждебные мобы спавнятся и рандомно деспавнятся снаружи сферы в 32 блока вокруг игрока и гарантированно деспавнятся снаружи сферы в 128 блоков), и, если находил среди них эндерменов, то агрил их, забирался в коробку внизу и убивал их. А потом топился в лаве, респавнился на вершине башни и так по кругу.
>5. Делаешь афк-рыбалку (норм способ, если уходишь куда-то)
Я так понял, там нужно ставить какой-то автокликер, не хочется и лень таким заниматься. А из остальных способов, видимо, самый эффективный - это добыча кварца.

Спасибо за советы.
15/02/20 Суб 20:01:03 34144152
ø.jpg 110Кб, 750x550
750x550
>>338680
Наконец-то, дошли руки починить это: чтобы вернуться в прошлое тупое состояние, когда сначала выбираешь между виндой и грубом, а потом в грубе выбираешь линукс в грубе, достаточно было просто ввести в командную строку с загрузочного диска несколько команд через bootrec.exe, а потом с винды через какую-то сомнительную утилиту добавить вариант выбрать груб при загрузке.

Это заняло минут 5, но мне было лень искать загрузочный диск винды и подключать дисковод.
15/02/20 Суб 23:08:43 34150453
ø.jpg 87Кб, 750x1000
750x1000
Сейчас поем и, думаю, сяду заниматься.
16/02/20 Вск 02:26:50 34154454
Так и не позанимался толком. Уже устал от того, что родители постоянно травят меня, стараюсь их избегать, но это не сильно помогает.
16/02/20 Вск 20:20:07 34179355
ø.jpg 77Кб, 1280x720
1280x720
Немного занимался и играл в майнкрафт. Видимо, всё же это игра не для меня, потому что я опять умер, пока пытался выбить немного опыта из кварца в аду. Увидел ещё одну идею по добыче опыта - zero tick ферму кактуса и бамбука, которая автоматически забрасывает кактусы в печки и переплавляет их в зелёный краситель, используя бамбук в качестве топлива. И, когда будешь доставать краситель из печки, то будет выпадать немного опыта. Но я уже всё, не хочу больше в это играть теперь уже точно.
17/02/20 Пнд 17:05:28 34195256
ø.jpg 261Кб, 2048x1431
2048x1431
Немного позанимался тем, что не нравится. Хотел поиграть во что-нибудь, а потом позаниматься тем, что немного нравится, но вдруг понял, что играть мне совершенно не во что. Наверное, начну заново проходить секиро. Заново, потому что имею странную привычку удалять сейвы перед тем, как бросать прохождение игры на долгое время.
17/02/20 Пнд 18:41:36 34197157
ø.jpg 363Кб, 2048x1430
2048x1430
Не получилось с первого раза прикончить Геничиро, так что не посмотрел на ту немного изменённую катсцену, где Секиро отвлекает сюрикен бумеранг и Геничиро исподтишка срубает ему руку. Ну это ладно.

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

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

Больше пока что, скорее всего, не буду сегодня в это играть.
17/02/20 Пнд 19:19:07 34198258
ø.jpeg 388Кб, 2048x1431
2048x1431
Родители выгнали на улицу выкинуть мусор и купить что-то в магазине. Вроде даже не создал ни одной стыдной ситуации. Единственное - не знаю, нужно ли отвечать на "здравствуйте" кассира в магазине. В этот раз на всякий случай ничего не ответил, чтобы исключить возможность заруинить своё приветствие.

Думаю, через минут 10 сяду заниматься.
Аноним 17/02/20 Пнд 19:39:09 34198859
>>341982
Нужно здороваться. А ещё говорить спасибо и прощаться в конце.
Аноним 17/02/20 Пнд 20:09:53 34199760
>>341988
а когда дают сдачу жать руку а потом говорить что я думал вы мне руку пожать хотели
17/02/20 Пнд 20:43:33 34200961
ø.jpeg 492Кб, 2048x1430
2048x1430
>>341988
Я боюсь, что поставлю и себя, и кассира в неловкое положение, если скажу что-нибудь не то. А ещё не знаю, нужно ли дожидаться, когда кассир распечатает чек и отдаст его тебе, если покупаешь что-то без сдачи. Он как бы обязан по крайней мере распечатать его, но я не знаю, может, можно уходить без него и это нормально.

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

>>341997
Нет, ну, всё не настолько плохо. Момент, когда надо протянуть руку, чтобы тебе в неё насыпали монетки я распознаю нормально, с этим проблем нет.
Аноним 17/02/20 Пнд 21:22:28 34201862
>>341997
Тебя просто хорошим манерам не учили, если для тебя банально поздороваться и попрощаться вызывает шок и потерю сознания.
17/02/20 Пнд 22:11:16 34202863
ø.jpeg 320Кб, 2048x1640
2048x1640
>>342018
Возможно.
>вызывает шок и потерю сознания
Нет, не вызывает, просто есть очень большая вероятность зафейлить это, на автомате могу сказать какую-нибудь стыдную глупость. Например, какое-то время назад у меня на кассе спросили, нужен ли мне пакет, на что я на автомате ответил "нет, спасибо", причём я неосознанно выделил "спасибо", как будто мне бы сделали большое одолжение, выдав пакет. И после этого кассирша ешё с какой-то странной интонацией ответила "пожалуйста". После этого я боюсь говорить лишнее.

И это такое только в продуктовых магазинах, в аптеках, например, у меня такого нет и я обычно здороваюсь, говорю спасибо и прочее, но это, скорее всего, из-за того, что там есть необходимость начать диалог самому и попросить тебе что-то дать в отличие от продуктового, где ты сам приносишь товары на кассу, так что, само собой, надо для начала поздороваться.
Аноним 17/02/20 Пнд 22:21:14 34203264
>>342009
Короч, подходишь на кассу и говоришь "здравствуйте", а когда соберёшься уходить "спасибо, до свидания", эти четыре слова сложно заруинить. А если и заруинишь, то что? Кассиру явно не будет неловко, если запнёшься-заикнёшься.
>как округляются цены до рубля
Што? Цены вообще ведь не округляются. Если ты даёшь денег больше, чем надо - получаешь сдачу всегда. Чек можешь не ждать. А можешь ждать, мало ли для чего он тебе нужен. Это не странно, всё хорошо.
17/02/20 Пнд 22:47:19 34204065
ø.jpeg 320Кб, 1464x2048
1464x2048
>>342032
>эти четыре слова сложно заруинить
Ну да, наверное, ты прав.
>А если и заруинишь, то что? Кассиру явно не будет неловко, если запнёшься-заикнёшься.
Я понимаю, что в этом ничего такого, но на деле это последняя мысль, которая появляется в голове, первая - это то, что надо поскорее отсюда сбежать. Может, просто опыта мало, да и я, наверное, немного преувеличиваю.
>Цены вообще ведь не округляются.
В рф копейки вроде хоть ещё и не вышли из оборота, но их в сдаче уже точно не дают (монеток номиналом 10 копеек и меньше уже относительно давно не видел, да и пятидесятикопеечную монетку тоже давно не встречал). Вместо этого округляют конечную стоимость всех покупок до рублей, но вот в какую сторону и зависит ли это от магазина - не знаю. При этом цены товаров могут содержать копеечную часть, и она учитывается при суммировании общей стоимости в чеке (то есть за два товара каждый стоимостью 1 руб. 50 коп. ты заплатишь 3 рубля, а вот за один такой товар отдашь либо 1 рубль, либо 2 рубля, тут вот как раз я и не знаю).
>Чек можешь не ждать. А можешь ждать, мало ли для чего он тебе нужен. Это не странно, всё хорошо.
Понятно, спасибо.
Аноним 17/02/20 Пнд 22:49:03 34204366
>>342028
да ты поехавший вообще не ходи в магазин там деньги грибут у тебя а продавщицам ничего вообще не говори будто ты и они тебя в последний раз видят и все
Аноним 17/02/20 Пнд 23:02:42 34204767
а когда стоишь тебе считаю надо постоянно возмущаться ценами!
зашел к вам а тут вас все такое дорогое где же столько на жизнь зарабатывать?
когда же у вас будут нормальные скидки?
когда перестанут продавать маспо?
зачем столько магазинов нейм построили в округе?
когда кока кола и пеппси по 30 рублей будет?
зашел к вам в магазин вышел без денег!
когда бесплатно еду давать будут?
Почему нету скидок на нормальную еду? Почему так дорого все?
19/02/20 Срд 14:19:29 34252968
ø.jpeg 430Кб, 2048x1976
2048x1976
В секиро прошёл до конца воспоминания из поместья Хирата. Убил какого-то сильного самурая в синем около трёхэтажной пагоды, которую упоминал вор-торговец, и достал крутой инструмент для протеза, позволяющий уклониться от атаки и мгновенно переместиться за спину врагу или появиться прямо в воздухе над ним.

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

Так и не смог по-честному прикончить госпожу бабочку: в первый раз снёс ей почти всё здоровье во второй фазе, но случайно попался в захват, и она меня ваншотнула. А в последующие разы дела шли постепенно всё хуже и хуже. Я пытался терпеливо ждать её атак, когда она подлетает в воздух и тогда её можно сбить сюрикеном и нанести удар, но эти успешные атаки наносили так мало урона, что только на первую её фазу у меня уходило минут 5. А потом надо было проделать то же самое с её второй, почти идентичной, фазой. Пробовал использовать тот инструмент, который телепортирует тебя за спину, но у неё слишком мало предсказуемых медленных ударов, чтобы этот трюк гарантированно получился.

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

Прошёл дальше мимо гигантского белого змея, убил самурая Гёбу, который оказался довольно простым, у него куча слабостей: во-первых, его конь боится петард, а, во-вторых, иногда открывается возможность зацепиться за него крюком, быстро сократить расстояние и нанести удар, от которого он с большой вероятностью станнится на некоторое время.

Пока что остановился на быке с привязанным к рогам горящим стогом сена.
19/02/20 Срд 17:24:09 34259169
1485682715408.jpeg 341Кб, 1257x1745
1257x1745
1461257458508.mp4 130Кб, 248x440, 00:00:24
248x440
трусится
Аноним 19/02/20 Срд 17:38:04 34259970
0b40e5e9cbc3c40[...].jpg 1206Кб, 1240x1754
1240x1754
>>342591
Плавная анимация будет?
19/02/20 Срд 17:53:22 34260571
1478409589279.jpeg 479Кб, 2384x3328
2384x3328
>>342599
Точно будет плавная анимация исчезновения полной линии и падения блоков над ней, для движения фигурки вниз, наверное, да, тоде будет анимация. Для вращения - не знаю точно, потому что волл кики будут выглядеть странно: во время анимации фигурка будет проворачиваться и задевать блоки, лежащие рядом, или вызлезать за пределы игрового поля. Может быть, можно сделать анимацию того, как будто фигурка вытаскивается из игрового поля (как будто двигается на тебя, в общем, просто зумится), проворачивается и одновременно перемещается линейно к месту, куда она встанет, а потом обратно уменьшается. Не знаю, насколько хорошо это будет выглядеть, в голове пока что выглядит нормально.
19/02/20 Срд 21:10:07 34269572
1509263704001.jpg 149Кб, 2048x1024
2048x1024
1500153850547.mp4 13613Кб, 248x440, 00:00:18
248x440
this is fine
19/02/20 Срд 23:17:34 34278073
ERI5Dj-U0AAQY1H.jpg 672Кб, 1262x1089
1262x1089
В секиро прикончил того быка с привязанным горящим сеном. Он довольно простой, от его деш атаки можно либо уклониться, либо, если её отразить, то в обмен на небольшое количество потерянного хп открывается окно, чтобы нанести ему несколько ударов по морде. А так, надо просто держать дистанцию. Немного обидно, что он какой-то недоделанный: если держаться сзади него, то он ничего не сможет тебе сделать, потому что атакует он только головой и иногда делает внезапный толчок боком. Хотя можно было хотя бы сделать, чтобы он лягался ногами, как это делают бронированные кабаны из первого дарк солса.

Вернулся в начальную локацию, убил там какого-то совсем простого мини-босса воина с копьём (семеро копьеносцев Ашина что-то там, не помню, как его звали), он был какой-то совсем простой: если отразить его выпад контратакой микири, то он сразу же попытается сам контратаковать взмахом копья, и, если и этот удар отразить, то он теряет равновесие и падает, открываясь для серии ударов. Немного прошёлся по крышам уже внутри замка Ашина, но ещё не до конца там всё прошёл: умер от внезапно десантировавшего с воздушного змея ниндзи (хм, видимо, не склоняется, но мне всё равно).
20/02/20 Чтв 00:32:55 34281174
1515700093249.jpeg 376Кб, 2048x1852
2048x1852
1550184368420.mp4 2250Кб, 248x440, 00:00:15
248x440
думаю, можно так оставить
20/02/20 Чтв 15:16:42 34304975
1473127677118.jpeg 1032Кб, 4096x1949
4096x1949
1455018693453.mp4 8119Кб, 360x680, 00:00:24
360x680
У меня сейчас глаза потекут. Эти гемы либо надо сделать симметричными, либо надо, чтобы по мере того, как поворачивается спрайт, постепенно заменять его на его же версию, но повёрнутую в другую сторону. И ещё, видимо, анимация слишком быстрая, потому что у меня в глазах рябит, когда я смотрю на это, может, надо сделать какое-то подобие моушн блюра, чтобы всё немного размазывалось по экрану. Не знаю, исправит ли это ситуацию. Но это потом.

А ещё сейчас одна анимация может прерываться другой: если последовательно быстро повернуть фигурку и сдвинуть её, то анимация поворота скипнется. Надо как-то переделать анимации так, чтобы можно было их совмещать? У меня сейчас анимация - это просто объект внутри сущности, к которой он принадлежит, и сущность отрисовывает анимацию вместо своего спрайта, когда это надо.

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

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

Немного пофиксил управление, теперь всё работает вот так: есть KeyManager, к которому можно добавить листенеров, которые после каждого игрового тика уведомляются о том, какие кнопки были нажаты, отпущены и всё ещё держатся нажатыми, в течение последнего тика. А сам KeyManager обрабатывает нажатия как только, так сразу.

>>342591
>130 Кб
>>342695
>13613 Кб
>>342811
>2250 Кб
Я не знаю, в каком битрейте записывать.
20/02/20 Чтв 15:40:53 34308376
1438145901572.jpeg 135Кб, 1190x1500
1190x1500
Наверное, минут через 10 сяду заниматься ерундой, но очень не хочется, слишком сильно ощущается бессмысленность. Да и в целом, если так подумать, то вообще ничего не хочется.
20/02/20 Чтв 17:54:29 34320777
1501786349656.jpg 635Кб, 1300x1300
1300x1300
Вроде и занимался какое-то время, но никакого прогресса по сути не сделал, по крайней мере вообще не чувствуется ничего, нет ни удовлетворения от того, что я что-то попытался сделать, нет ощущения, что я куда-то сдвинулся. А между тем два часа прошло, это как минимум одна восьмая от куска суток, в течение которого я бодрствую. Из-за этого у меня постоянно и крутится в голове мысль, что либо всё вокруг слишком быстрое, либо я слишком медленный.

Думаю, сейчас буду играть в секиро.
Рируру !!gYmpHned/k 20/02/20 Чтв 18:19:23 34321878
469e386228944d0[...].jpg 2918Кб, 2800x2100
2800x2100
>>343049
>Я не знаю, в каком битрейте записывать.
Бывает же quality-based (quantizer-based) режим, наиболее пригодный для кодирования в один проход, да и в два тоже, если размер результата не важен. С чистым bitrate-based кодируют строго в два, и даже тогда он, очевидно, ХУЖЕ, т. к. не руководствуется качеством как основным параметром.

>либо надо, чтобы по мере того, как поворачивается спрайт, постепенно заменять его на его же версию, но повёрнутую в другую сторону
Хороший вариант, можно ещё сделать гемы векторными и раскрашивать формулой: связать с каждой гранью воображаемые положение и нормаль (поворачиваемые вместе с гемом), придумать позицию источника света и освещать грань через max(0, dot(normal, vecToLight.normalized)) (+ можно блик). Как оптимизация, заранее отрисовать 5–25 версий этого гема, повёрнутых на разные углы, и выбирать ближайшую. Ну или просто сделать все версии вручную, если терпеливый.

Можно даже выбирать не просто ближайшую, а две соседних, из которых ближайшую нарисовать как есть, а вторую — поверх неё с блендингом, пропорционально удалённости от первой. Тогда даже медленный поворот будет выглядеть приемлемо, и будет достаточно меньшего количества версий. Например, если есть версии для A=0° и B=30°, то поворот на 10° изображается как A, поверх которой B с 33% непрозрачности. На самом деле я не учёл необходимость в плавном затухании старой версии. Можно как-то так: до mid=25° плавно проявляется B, так что в точке mid они оказываются наваленными одна на другую, и затем нижележащая A плавно затухает от mid до 30°.

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

У объекта есть анимируемые параметры (позиция-поворот, ЦВЕТ и ИНТЕНСИВНОСТЬ СВЕЧЕНИЯ и тому подобное). Активных анимаций может быть несколько, с каждой может быть связан вес (или, для начала, все полагаются равноправными). Анимация сообщает, какие параметры хочет установить, в какое значение, и, возможно, с каким специальным весом/приоритетом. Финальное значение параметра формируется их взвешенной суммой. КЛЁВО Я ПРИДУМАЛ, А

Например, если у объекта активны состояния
СУМАСШЕДШИЙ КЛОУН: глобальный поворот = ...плывёт в воздухе и периодически переворачивается вниз головой...
БРОСОК ПИРОГА: поворот руки = ...замах для броска...
СМЕХ: рот = ...открыт..., звук = ...смех...

То мы получаем перевёрнутого смеющегося клоуна, замахнувшегося для броска. Это был неудачный пример, потому что ни одного параметра не пришлось смешивать. Ну, допустим, он только что чесал голову этой же рукой и его ещё не отпустило, но вес анимации уже затухает:
БРОСОК ПИРОГА: вес = 1.0, поворот руки = ...
ЧЕСАНИЕ ГОЛОВЫ: вес = 0.14, поворот руки = ...

Финальный поворот руки = (1.0 × поворот для пирога + 0.14 × поворот для головы) / (1.0 + 0.14).

Так нельзя на самом деле можно взвешенно сложить N>2 поворотов, но в крайнем случае смешивание нескольких значений всегда можно выразить через смешивание двух. Например, смешаем четыре значения — A с весом 0.5, B с весом 0.75, C с весом 0.9 и D с весом 0.3:
temp = A
temp = mix(B, temp, 0.5 / (0.5 + 0.75))
temp = mix(C, temp, (0.5 + 0.75) / (0.5 + 0.75 + 0.9))
result = mix(D, temp, (0.5 + 0.75 + 0.9) / (0.5 + 0.75 + 0.9 + 0.3))

Где mix(A, B, x) выполняет интерполяцию между двумя значениями A и B с параметром x∈[0.0; 1.0], в частности, возвращает A при x=0 и B при x=1. Мог ошибиться в конкретной общей формуле, но суть понятна. Я даже использовал такой подход в своей игре VISIBLE FIGHTERS (>>303974 →) для генерации взвешенно-случайного значения за один проход по весам!

Можно легко пофиксить вылезание фигурки за пределы игрового поля в ходе анимации, отслеживая, в каких точках оказались вершины её выпуклой оболочки. Если одна из них вылезла за пределы поля на V, сдвигаем всю поворачиваемую фигурку на ‒V. С залезанием на другие фигурки так просто не получится, правда. Я вчера думал о том, что можно аналогичным образом отследить, в какие квадратики она залезла, отодвинуть (деформировать) их и деформировать остальные квадратики в некотором радиусе от них с уменьшающейся силой, но это может странно/страшно выглядеть: мол, сегодня квадратики теснятся, чтобы вместить невмещавшуюся фигурку, завтра попытаются что-то сказать, а послезавтра вылезут наружу.
20/02/20 Чтв 22:21:32 34337579
1455623289622.jpeg 267Кб, 607x916
607x916
1539182887517.png 2Кб, 119x170
119x170
>>343218
>Бывает же quality-based (quantizer-based) режим
Да, действительно, я не заметил, что такое есть в OBS, сначала показалось, что там во всех режимах надо выставлять битрейт.
>можно ещё сделать гемы векторными
Да, наверное, сделаю.
>Можно легко пофиксить вылезание фигурки за пределы игрового поля в ходе анимации, отслеживая, в каких точках оказались вершины её выпуклой оболочки.
Да, наверное, тоже можно сделать. А с тем, чтобы ещё и блоки расступались перед ней, тут я как-то даже не знаю, как это может выглядеть, например, в случае как на пикриле (пунктиром показано положение фигурки после поворота).
>У объекта есть анимируемые параметры
>Анимация сообщает, какие параметры хочет установить, в какое значение, и, возможно, с каким специальным весом/приоритетом. Финальное значение параметра формируется их взвешенной суммой.
Хм, да, теперь понятнее, спасибо, попробую переделать потом, чтобы у меня в самом объекте были параметры вроде вращения, движения и прочих штук.
21/02/20 Птн 00:03:16 34342780
1517852702588.jpeg 776Кб, 851x1200
851x1200
1444727120292.mp4 5333Кб, 640x480, 00:00:16
640x480
Нарисовал что-то идентичное тому, что было. Теперь в коде куча странных магических вычислений, которые вроде как правильно всё отрисовывают и теперь можно раскрашивать грани, да и вообще всё в разные цвета. Включил сглаживание и какой-то кволити пресет, но всё равно текут глаза.
21/02/20 Птн 03:21:45 34345381
1438387326933.png 311Кб, 595x896
595x896
1464040569879.mp4 9036Кб, 360x680, 00:00:27
360x680
меня укачало
21/02/20 Птн 04:01:31 34345682
1462838447883.jpeg 429Кб, 2150x2798
2150x2798
В секиро толком ничего не прошёл, только всё же допрошёл путь по крышам внутри стен Ашины до какого-то окна, но пока что дальше туда не заходил. Так и не понял, как сражаться с ниндзями с сюрикенами-бумерангами. Видимо, надо просто стараться сокращать дистанцию и держать блок, отражая все сюрикены, пока не предоставится возможность атаковать мечом или выстрелить сюрикеном, чтобы выбить етого ниндзю из равновесия, пока он делает всякую акробатику в воздухе.

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

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

А из колодца путь в подземелья, в которых я нашёл очень тупого босса, которого не смог прикончить, потому что у него очень высокая сопротивляемость к физическим атакам. При этом сам он простой: он тупо кастует кучу шаров, которые витают в воздухе и, если врезаться, то наносят урон и заполняют полоску статус эффекта "страх", который меня тупо убивает, когда полностью заполняется. А из мили атак у него только полтора взмаха посохом. И главная проблема с ним - это то, что у меня не хватает хп и терпения аккуратно его бить мечом, снося крупицы здоровья. Один раз попробовал заиспользовать божественные конфети, которые позволяют наносить нормальный урон всякой нежити вроде этого босса, надеясь на лёгкую победу, но в итоге только потерял одну из двух коробок с конфети, которые у меня были. После этого рейджквитнул и не стал дальше играть. Наверное, надо пока что скипнуть этого босса до тех пор, пока у меня не появится какой-то особый клинок, который позволяет наносить нормальный урон нежити, но я уже не помню с первого прохождения, когда он даётся и долго ли ещё ждать.
21/02/20 Птн 04:05:00 34345883
>>343456
>А из колодца путь в подземелья
Через колодец
Если
Если пройти через колодце
По дну колодца, но не совсем под дну, там надо по стене забраться
Надо спуститься в колодец, а потом подняться, но не из колодца, а дальше пройти
Это и не колодец-то по сути, а ров какой-то, но там тоже вода есть
Да
21/02/20 Птн 14:38:16 34362684
1518712228776.jpeg 161Кб, 1164x1500
1164x1500
1568023092142.mp4 3430Кб, 360x680, 00:00:10
360x680
ясно
21/02/20 Птн 16:33:54 34368385
1438710521792.jpeg 156Кб, 924x1024
924x1024
1526176590965.mp4 7417Кб, 360x680, 00:00:22
360x680
1508846248160.mp4 4244Кб, 360x680, 00:00:13
360x680
Анимация теперь работает почти так, как должна, по крайней мере выглядит почти приемлемо, сейчас у меня анимации трогающие одни и те же пераметры (ну, у меня получается, это два поворота подряд или два движения подряд) никак друг на друга не накладываются, а просто приоритет отдаётся анимации, которая была добавлена в последнюю очередь.

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

И ещё не знаю, стоит ли делать наложение анимаций друг на друга с помощью взвешенной суммы параметров. В качестве веса анимации можно было бы взять то, насколько она свежая, так что новые анимации бы перебивали старые, но при этом всё было бы чуть более плавно и повороты туда-обратно выглядели бы более плавно.
Yuyuko !hhoO7CxTZY 21/02/20 Птн 19:01:54 34372286
>>343683
Хм, думаю в момент второго нажатия, нужно посчитать дельту между углом изначального положения (до первого нажатия) и "текущим" углом во время второго нажатия. Далее нужно пропорционально перевести радианы во время.

Допустим анимация поворота в общем длится 300 ms, до первого нажатия нажатия угол 1.57, во время второго нажатия 1.2, тогда дельта будет 0.37. Конвертируем ее во время, если полный поворот 1.57 радиан, тогда время будет равно 300 * 0.37 / 1.57. Значит анимация после второго нажатия будет -0.37 радиан за ~70 ms
21/02/20 Птн 19:57:52 34373387
1495589155994.jpg 1244Кб, 2337x2669
2337x2669
>>343722
Ой, это хорошая идея, спасибо, потом сделаю.
Рируру !!gYmpHned/k 21/02/20 Птн 19:58:48 34373488
bffa59ed1384ac7[...].gif 428Кб, 560x358
560x358
>>343626


>>343683
>стоит ли делать наложение анимаций друг на друга с помощью взвешенной суммы параметров
А-а-а, нет, конечно, я же пошутил((9.

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

Если анимация анимирует поворот, и объявляется более актуальная анимация для поворота той же фигурки, то всё, что нужно сделать — прервать первую, а вторую начать со значения незаконченного поворота.

>но не знаю, насколько это будет правильным решением и как определять, достаточно ли текущее положение близко к целевому, чтобы можно было сократить длительность анимации, и как сильно вообще сокращать её длительность
Во-первых, ты серьёзно? Это школьная программа.
При равномерном движении время = путь/скорость. Да ладно.
При равноускоренном S=v₀t+at²/2, и из известных начальной скорости v₀, ускорения a и пути S время находится решением квадратного уравнения относительно t. Вроде как, тьфу-тьфу, не твой случай.

Во-вторых, анимация так-то не обязана иметь явное время, её можно реализовать и как
animation = { cur_angle, target_angle }

function update(dt)
{
  step = 5.0 * dt;
  diff = angle_diff(target_angle, cur_angle);
  if abs(diff) > step then
    cur_angle = normalize_angle(cur_angle + step * sign(diff))
  else
    cur_angle = target_angle
    animation_finished()
}

Где:
function angle_diff(a, b) { return normalize_angle(a - b) }
function normalize_angle(a) { return fmod(a + pi, twopi) - pi }
function fmod(x, y) { return x - y*floor(x/y); }

Иными словами, angle_diff — разность со знаком между углами по кратчайшей дуге, normalize_angle — приведение угла к [-π; π), а fmod — неотрицательный (т. е. принятый в математике; предполагается y > 0) вещественный остаток от деления.

То есть, в случае равномерного движения, текущий угол приближается к целевому каждый кадр на vel×dt, и процесс завершается, когда цель достигнута. Я не говорю, что это хорошая идея, потому что такой подход, наверное, проще сломать какими-нибудь крайними случаями, чем «сейчас выполняется плавное изменение параметра от значения A до значения B за время T, прошло t, поэтому мгновенное значение параметра — mix(A, B, t/T)», и потому что ты всё равно можешь захотеть заранее знать время анимации, чтобы, к примеру, не допустить слишком долгой.
21/02/20 Птн 20:53:37 34374189
1467562405926.jpg 1006Кб, 2894x4093
2894x4093
>>343734
>gif
krasivo
>с двумя взаимоисключающими анимациями
>предыдущую можно, и даже нужно, просто прибить
Ну, может быть.
>Во-первых, ты серьёзно?
Да. Что поделать.
>текущий угол приближается к целевому каждый кадр на vel×dt, и процесс завершается, когда цель достигнута
Да, так можно было сделать, но для анимаций движения активной фигурки я всё же оставлю вариант с явно заданным временем, чтобы было проще скорректировать длительность анимаций по мере того, как ускоряется игра. Чтобы длительность анимаций была по крайней мере не больше времени в течение которого фигурка висит в воздухе на одном уровне.

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

А за эти модные формулы спасибо, я их заберу себе, а то у меня очень по-тупому реализованы эти вещи.
21/02/20 Птн 21:38:18 34374590
1522295313001.png 218Кб, 727x778
727x778
В секиро прошёлся по главной башне замка Ашина. Там внутри особо ничего интересного, просто куча одинаковых самураев, впрочем, относительно сильных, особенно, когда нападают несколько таких. Но они обычно не лезут на рожон, так что надо просто держать дистанцию и контрить их колющие выпады. Там же был мини-босс, по внешнему виду почти такой же самурай, но этот, внезапно, имеет гораздо менее разнообразный набор ударов, чем те рядовые воины, что были перед ним. Как правило, он просто резко сокращает дистанцию и делает два взмаха мечом, причём только одного попадания достаточно, чтобы снести мне почти всё здоровье. И, несмотря на то, что в остальном он очень простой и достаточно просто уклоняться от его однообразных атак и контратаковать, он всё же смог несколько раз меня убить, когда я ошибался всего лишь один раз за весь бой и не успевал уклоняться.

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

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

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

А демон колокола действительно неплохо помогает, по крайней мере недостатка в ресурсах для апгрейда инструментов протеза у меня нет. Другое дело - это, что апгрейды какие-то немного бесполезные.
21/02/20 Птн 23:19:30 34376991
1472041289791.jpeg 1199Кб, 3118x4064
3118x4064
24/02/20 Пнд 18:42:35 34482592
1582558954537.jpg 816Кб, 2048x2048
2048x2048
В секиро прошёл через подземелья в храм Сэмпо и прилегающие к нему территории, и прошёлся там вроде как везде. Там особо ничего интересного не было, единственное - немного больше рассказали про то, как монахи там искали секреты бессмертия. И то, к чему они пришли - это, судя по всему, вживление каких-то червей в людей, причём, судя по кучам валяющихся тут и там трупов, эксперименты эти в основном были не сильно удачными, и выжила и обрела бессмертие только девочка, которую можно найти в конце локации и у неё же забрать клинок бессмертных, которым можно разрубать узы бессмертия. В том числе им можно прикончить бессмертных червивых монахов, которые, в конец потеряли человечность, но зато обрели бессмертие, такая, другая крайность.

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

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

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

Ещё, убив, монахиню, которая охраняла вход в пещеру с ароматным камнем (который оказался кристаллом, который "рос внутри тех, кто на протяжении долгого времени пил из первоисточника", но я так и не понял пока что, что подразумевается под первоисточником тут, наверное, где-то дальше по сюжету будет), получил возможность плавать под водой, что открыло сразу кучу возможностей. Вообще, это такая крутая идея - постепенно давать игроку дополнительные способности, с помощью которых он мог бы потом заново для себя открыть уже пройденные локации. Правда, тут никаких особо новых секретных мест я не открыл, только выбил кучу чешуек драгоценного карпа и нашёл двух новых безголовых: один сидел под водой, а второй сидел в гроте, в который можно было попасть только проплыв под водой. Подводный пока что единственный из безголовых, которого я смог прикончить, но только потому, что он значительно слабее других. Остальных, видимо, надо очень точно парировать: при отражении атак статус-эффект страх не накладывается, и при этом у безголового заполняется полоска концентрации, которая у него восстанавливается обратно довольно медленно. Вроде как улучшенным зонтом можно блокировать и наложение страха, но у меня его нет ещё.

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

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

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

Кстати, я долго не понимал, кто такие эти торговцы подношениями, но, судя по всему, это просто воры, которые снимают ценные вещи с трупов. Это можно узнать, поговорив с торговцем информацией, который упоминает, что раньше тоже торговал подношениями, потом перестал, но привычка обирать трупы осталась.
24/02/20 Пнд 18:46:29 34482693
1582559188593.jpg 481Кб, 1536x2048
1536x2048
конфетти конфетти конфетти конфетти конфетти конфетти конфетти конфетти конфетти конфетти
теперь я запомню, что там два т
Аноним 24/02/20 Пнд 20:00:21 34484394
1582563619538.jpg 1071Кб, 3274x2315
3274x2315
Думаю, минут через 15 сяду заниматься ерундой, которая меня бесит. Я не знаю, есть ли смысл вообще в этом, такой бред.
Аноним 24/02/20 Пнд 23:03:26 34490695
ERiV9sFU4AMLJej.jpg 380Кб, 1669x2048
1669x2048
Так же, как и в предыдущий раз, я не продвинулся, потратил на это слишком много времени, всё это было бесполезно.
Аноним 25/02/20 Втр 00:15:02 34492096
Аноним 26/02/20 Срд 02:15:16 34527697
1582672515494.jpg 461Кб, 1540x2048
1540x2048
не хочу больше играть в сэкиро, этого тупого сошедшего с ума резчика (который демон ненависти), невозможно победить, я еле-еле могу сбить у него две полоски хп из трёх, а на третьей он начинает кастовать стены из огня вокруг себя и ещё чаще плеваться кучей огненных прожектайлов

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

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

конечно, немного интересно, что там в конце, что это за чёрный клинок, который упоминается в записке ишшина, да и в целом, на самом деле, игра крутая, особенно в плане подачи сюжета, но я не хочу больше это трогать
26/02/20 Срд 16:48:13 34537098
1491309878118.mp4 5496Кб, 360x680, 00:00:16
360x680
1479780136217.jpeg 605Кб, 1200x1886
1200x1886
выглядит отлично, в стороны почему-то не двигается, это странно

Вместо того, чтобы заниматься чем-то нормальным, я упаковываю иксы и игреки в один объект, чтобы можно было писать строки мусорного кода, которые не умещаются даже в монитор, вот вроде такого:
>DoubleVector rotationPivot = coordinates.add(shapeType.getRotationPivot().add(0.5, 0.5).times(blockWidth));
почему к getRotationPivot надо прибавлять мистические половинки - секрет
на самом деле, нет, это надо будет потом исправить, просто у меня эта же штука вызывается в другом месте, где прибавлять эти 0.5 не надо
Ну, как бы, в теории это должно уменьшить вдвое вероятность ошибки в местах, где вычисляются координаты, но в то же время, так что это вроде не так бесполезно.
Yuyuko !hhoO7CxTZY 26/02/20 Срд 17:06:01 34537599
>>345370
Напоминает мой код вращения камеры на кватернионах, в итоге сделала через перевод сферических координат.
Аноним 26/02/20 Срд 20:59:27 345449100
1428277692400.jpeg 256Кб, 2048x1170
2048x1170
1455836840863.mp4 2103Кб, 360x680, 00:00:06
360x680
выпуклая оболочька
Рируру !!gYmpHned/k 26/02/20 Срд 23:20:39 345496101
79695400p0.jpg 1992Кб, 1000x1414
1000x1414
>>345449
Позорный, но простой способ — вбить оболочку вручную, дескать, слишком много чести для 4 клеточек искать её общим способом. Только впоследствии придётся убивать всех, кто узнает, что ты так сделал.

class Shape
{
  IntVec2[] cells;
  Vec2[] convexHull;
}

//  → x
// ↓
// y
//
// ######
// ######
// ###
// ###
// ###
// ###
G: Shape =
{
  cells: {(0, 0), (0, 1), (0, 2), (1, 0)}
  convexHull: {(0.0, 0.0), (0.0, 3.0), (1.0, 3.0), (2.0, 1.0), (2.0, 0.0)}
}

update()
{
  for (point in fallingItem.shape.convexHull)
  {
    screenPoint = fallingThing.screenTransform.apply(point)
    screenBoundA = min(screenBoundA, screenPoint);
    screenBoundB = max(screenBoundB, screenPoint);
  }
  // fix = max(Vec2.Zero, -screenBoundA) - max(Vec2.Zero, screenBoundB - screenFieldSize)
  if (screenBoundA.x < 0) fix.x -= screenBoundA.x;
  if (screenBoundA.y < 0) fix.y -= screenBoundA.y;
  if (screenBoundB.x > screenFieldSize.x) fix.x -= screenBoundB.x - screenFieldSize.x;
  if (screenBoundB.y > screenFieldSize.y) fix.y -= screenBoundB.y - screenFieldSize.y;
  fallingThing.screenPos += fix;
}

Либо заметим, что у реалистичных фигурок вершины выпуклой оболочки — это узлы сетки, принадлежащие единственной ячейке. Это всё ещё проще общего способа, но и свидетелей убивать уже не придётся.
27/02/20 Чтв 01:53:29 345534102
1486357880276.jpg 574Кб, 874x1200
874x1200
1454488508308.mp4 3445Кб, 360x680, 00:00:10
360x680
1527326778148.mp4 4364Кб, 360x680, 00:00:13
360x680
>>345496
На самом деле, я думаю, это не столько позорно, сколько error-prone, чувствительно к изменениям и затратно по силам.
>Либо заметим, что у реалистичных фигурок вершины выпуклой оболочки — это узлы сетки, принадлежащие единственной ячейке.
Если честно, ничего не понял. Просто брать вершины каждого блока в фигурке и проверять, не вышел ли он за границы?

В общем, проблема с graham scan в ошибках округления. Может быть такое, что алгоритм увидит три вершины на одной прямой и переберёт их в неправильном порядке, потому что ему покажется, что он не лежат на одной прямой. Не знаю, как этого избегать, вообще я запутался.
27/02/20 Чтв 02:23:46 345535103
1476028850453.jpeg 279Кб, 1200x1700
1200x1700
А, у меня плохо работало в том числе и с эпсилоном, потому что я забыл добавить эпсилон при сортировке вершин в порядке возрастания полярного угла. Теперь работает более-менее.
Рируру !!gYmpHned/k 27/02/20 Чтв 03:19:09 345543104
Tetramino conve[...].png 145Кб, 1000x850
1000x850
>>345534
>Если честно, ничего не понял
Пикрелейтед.

>Может быть такое, что алгоритм увидит три вершины на одной прямой и переберёт их в неправильном порядке, потому что ему покажется, что он не лежат на одной прямой.
Теперь я не понял. Ты ищешь выпуклую оболочку уже повёрнутой фигурки, что ли? Этого не нужно делать, т. к. выпуклая оболочка повёрнутой фигурки идентична повёрнутой выпуклой оболочке неповёрнутой фигурки, а вершины неповёрнутой фигурки лежат в узлах целочисленной сетки, где погрешностей нет в принципе.

У тебя ведь наверняка есть локальная система координат фигурки, где Т-тетрамино состоит из ячеек, скажем, (0, 0), (1, 0), (2, 0) и (1, 1), которые, пройдя ряд преобразований, становятся экранными координатами спрайтов. Выпуклую оболочку можно однократно вычислить в этой локальной системе координат, сохранить с остальными метаданными фигурки и впоследствии применить к её вершинам те же преобразования, чтобы узнать, куда она там залезла на экране.
Аноним 27/02/20 Чтв 03:29:37 345546105
1582461338963.jpeg 172Кб, 1261x915
1261x915
>>345543
>Пикрелейтед.
А, вот так, понятно, при кольно.
>Ты ищешь выпуклую оболочку уже повёрнутой фигурки, что ли?
Да. Ну да, можно вычислять её заранее и поворачивать потом, как-то не подумал об этом. Спасибо.
Аноним 27/02/20 Чтв 04:06:26 345548106
1544121380458.jpeg 53Кб, 430x1254
430x1254
1514821847961.mp4 6800Кб, 360x680, 00:00:20
360x680
Выглядит странновато.
Аноним 27/02/20 Чтв 12:41:12 345627107
1462114060830.jpeg 322Кб, 1450x2048
1450x2048
1435470033209.mp4 10184Кб, 360x680, 00:00:31
360x680
1460379888441.mp4 8797Кб, 360x680, 00:00:27
360x680
Немного переделал вращения, теперь можно крутить фигурку, если очень быстро давить на одну клавишу, то есть если нажимаешь 10 раз поворот в одну сторону, то она делает поворот 10 раз, если её не стопить. До этого было так, что если успеть нажать четыре раза на клавишу вращения за время того, как фигурка ещё проворачивается на 90 градусов, то она поворачивалась обратно в изначальное положение самым коротким путём.

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

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

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

Выпуклые оболочки вычисляются только единожды для каждой фигурки, гемы, освещённые под разными углами, генерируются только один раз и потом между этими контрольными точками делается переход с изменением прозрачности. Осталось только починить ту ерунду с прибавлением (0.5, 0.5) и, наверное, оно будет выглядеть достаточно сносно для меня.
Аноним 27/02/20 Чтв 12:50:53 345631108
1502050503879.jpeg 148Кб, 1448x2048
1448x2048
1448467476584.mp4 5067Кб, 360x680, 00:00:15
360x680
Хотя нет, получается, первый вариант - тоже мусор, потому что там можно сделать вот так. Два раза нажать поворот в одну сторону и один раз в противоположную, и она делает внезапный поворот на 3PI/2.
Yuyuko !hhoO7CxTZY 27/02/20 Чтв 14:14:14 345670109
>>345546
Любишь этих девочек?
Аноним 27/02/20 Чтв 17:52:28 345789110
ERxjFZeU0AEs5W.jpeg 406Кб, 2048x1448
2048x1448
>>345670
Не имею возможности ответить положительно, потому как не смотрел аниме с ними.
Аноним 27/02/20 Чтв 18:33:08 345806111
1574710908433.jpeg 695Кб, 1500x1072
1500x1072
Пришла в голову тупая идея, если будут павер апы (я не знаю, как их по-другому назвать, способности?) когда-нибудь в этой жизни, то можно сделать возможность сменить текущую падающую фигурку на другую рандомную или на рандомную, которую можно было бы куда-нибудь удобно впихнуть.

И делать это с эффектом перестановки блоков. Там же одинаковое количество блоков во всех фигурках. Думаю, это нетрудно будет сделать потом a star поиском.
Аноним 28/02/20 Птн 13:27:43 346095112
1464712624528.jpeg 312Кб, 2048x1464
2048x1464
1466420438714.mp4 3664Кб, 360x680, 00:00:11
360x680
Забыл, что у меня цвета хранятся просто в массиве в row major порядке, из-за этого теперь оно мигает как светофор. Не хочу, чтобы блоки был отдельными сущностями, которые все по отдельности надо будет поворачивать и перемещать, а по-другому не знаю, как хранить цвета.

Единственная идея - переделать классы для типов фигурок так, чтобы они возвращали не boolean[][] массивы в качестве своих представлений, а int[][], где блоки были бы проиндексированы.
Аноним 28/02/20 Птн 13:47:00 346100113
1489802982011.jpeg 129Кб, 976x1024
976x1024
У меня, из типа фигурки можно достать её boolean[][] представление для четырёх положений вращений, и, если блоки в фигурке находятся в процессе поворота, то используется представление, соответствующее изначальному положению и оно поворачивается графически, а, если фигурка в спокойном состоянии, то используется представление текущего положения фигурки, чтобы не надо было каждый раз всё вращать на 90°, 180° или 270°.

Поэтому у меня сразу после начала поворота меняются цвета, а не после того, как фигурка закончила вращаться. Меня просто смутило это, когда пересмотрел внимательнее.

И, я сейчас понял, что если реализовывать эту идею с индексированием, то придётся запоминать положение, из которого вращение начиналось, чтобы раскрасить правильно блоки. И это всё в голове складывается в какое-то совсем уродливое решение с кучей неочевидных вещей. Так что, возможно, всё же вариант с тем, чтобы воспринимать фигурку как несколько склееных блоков, лучше.
Аноним 28/02/20 Птн 19:48:48 346256114
1582908527544.jpg 501Кб, 1496x2048
1496x2048
Всё же допрошёл секиро, но, к сожалению, не на самую лучшую концовку, а на ту, в которой волк делает судоку, потому что слишком поздно обнаружил, что божественное дитя из храма Сэмпо даёт рис для Куро, который я ему уже не мог отдать. Не хотел спойлерить себе ничего, поэтому не гуглил, как получать эту концовку, ну и закономерно упустил её.

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

На нг+ вряд ли буду играть, хотя хотел посмотреть на концовку которая будет, если остаться верным кодексу шиноби. Пришлось бы следовать указаниям поехавшего старика, желающего заполучить бессмертие. Но вряд ли буду проходить нг+, я попробовал пройти сейчас по первым локациям, и как будто бы у меня и не было никаких улучшений силы: врагам как будто утроили здоровье и шкалу концентрации.

Родители опять выгоняют на улицу в магазин, зачем-то нужен творог, причём продаётся он на развес, так что придётся подходить и просить дать тебе его. За что мне вообще такое.
Аноним 28/02/20 Птн 23:18:18 346353115
1582921096774.jpg 752Кб, 1500x1854
1500x1854
Кстати, сегодня я ничего не делал, и для этого не было никакой хорошей причины.
Аноним 29/02/20 Суб 14:19:14 346500116
EOhyBuQUwAQmpla.jpeg 678Кб, 4096x2352
4096x2352
2020-02-29 14-1[...].mp4 8788Кб, 360x680, 00:00:27
360x680
Выглядит отлично.
Аноним 29/02/20 Суб 15:00:21 346505117
1543247852224.jpeg 375Кб, 2048x1152
2048x1152
1431682654721.mp4 9618Кб, 360x680, 00:00:29
360x680
1535778576252.mp4 5105Кб, 360x680, 00:00:15
360x680
Выглядит ещё лучше.
Аноним 29/02/20 Суб 18:00:41 346565118
1513658558905.gif 483Кб, 600x600
600x600
1512715373149.mp4 7993Кб, 360x680, 00:00:24
360x680
Ну вот, теперь я окончательно всё доломал и не понимаю, что происходит.
Yuyuko !hhoO7CxTZY 29/02/20 Суб 19:07:14 346598119
>>346565
Непонятно, чего ты пытаешься добиться?
Рируру !!gYmpHned/k 29/02/20 Суб 20:07:50 346617120
9ZAVoAFWlM.jpg 135Кб, 720x960
720x960
>>346565
Модные формулы, part 2

Введём Rotation2D и Transform2D (или у тебя такой уже есть, или в Java такой уже есть, но тогда чё за хуйня).
class Rotation2D
{
  float cosa, sina;
  static Rotation2D fromAngle(angle) { cosa = cos(angle); sina = sin(angle); }
  float toAngle() { return atan2(sina, cosa); }

  Vec2 apply(Vec2 v)
  {
    return Vec2.of(cosa*v.x - sina*v.y, sina*v.x + cosa*v.y);
  }

  Rotation2D combine(Rotation2D b)
  {
    return
    {
      cosa = this.cosa*b.cosa - this.sina*b.sina,
      sina = this.sina*b.cosa + this.cosa*b.sina
    }
   }
}

class Transform2D
{
  Vec2 trans;
  Rotation2D rot;

  Vec2 apply(Vec2 v)
  {
    return trans + rot.apply(v);
  }

  Transform2D combine(Transform2D b)
  {
    return
    {
      trans = this.combine(b.trans),
      rot = this.rot.combine(b.rot)
    }
  }
}

Это (почти) прямой эквивалент хранения трёхмерного преобразования как Vec3 trans + Quaternion rot. Кватернион поворота вокруг оси V на угол α — гиперкомплексное число {Imᵢⱼₖ=V sin α/2, Re=cos α/2}; а наш Rotation2D — обычное комплексное {Im=sin α, Re=cos α}.

Объекты в сцене могут быть собраны в иерархию: например, фигурка — дитя корня сцены, а части фигурки — дети фигурки. У узла есть локальное преобразование — localTransform: например, у фигурки это её смещение в рамках поля и поворот, а у частей фигурки — их локальные смещения в фигурке. Когда все localTransform расставлены, для каждого объекта, начиная с корня, мы можем вычислить globalTransform = parent.globalTransform.combine(this.localTransform), это и будет его видимым преобразованием. Удобно взять за рабочую единицу длины размер 1 блока, а на экран всё преобразовывать в последнюю очередь (blockPixelPos = block.globalTransform.trans / SCREEN_SIZE_IN_BLOCKS*SCREEN_SIZE_IN_PIXELS).

В терминах Transform поворот вокруг точки P можно выразить как комбинацию смещения на -P, поворота, и смещения снова на P.
Аноним 29/02/20 Суб 22:33:17 346684121
1557218961942.jpg 66Кб, 766x706
766x706
1520032097831.mp4 6571Кб, 360x680, 00:00:20
360x680
>>346598
У меня раньше фигурка была одной цельной сущностью, в которой нельзя было выделить отдельные блоки, но из-за этого повороты неодноцветых фигурок получались неправильными >>346095, поэтому хотел сделать так, чтобы фигурка представляла из себя несколько сущностей-блоков, но, как только я начал это всё переделывать, полезло куча багов.

И ещё я хотел сделать так, чтобы поворот применялся только непосредственно при анимации поворота, а в остальные моменты времени спрайты отрисовывались бы без поворота, на этом меня сильно заклинило.

>>346617
>Модные формулы
Нет, эти формулы немодные, там же просто матрицы поворота. Но за идею с комбинированием преобразований
>у фигурки это её смещение в рамках поля и поворот, а у частей фигурки — их локальные смещения в фигурке
спасибо, может, переделаю у себя так.
>/ SCREEN_SIZE_IN_BLOCKS*SCREEN_SIZE_IN_PIXELS
Не очень хочу делать, чтобы оно ресайзилось как угодно.
Yuyuko !hhoO7CxTZY 29/02/20 Суб 22:53:05 346697122
>>346684
Неплохая идея, я тоже часто зацикливаюсь на деталях, могу долго рефакторить и думать как правильно сделать отношения между разными абстрактными сущностями, хотя это и не добавляет никакого функционала. Почему отдельные кубики разных цветов? Или это тетрис с элементом три в ряд?
Аноним 29/02/20 Суб 23:40:24 346726123
1557329197051.jpeg 3563Кб, 2499x1830
2499x1830
>>346697
Да, думал сделать потом помимо обычного тетриса режим N-в-ряд с упрощёнными фигурками (из 2-3 блоков). Или, может, как в доктор марио. А в обычном тетрисе, я думаю, фигурки будут раскрашены равномерно.
Аноним 01/03/20 Вск 18:21:47 346970124
1509368276554.jpeg 1864Кб, 2894x4093
2894x4093
1466359951637.png 653Кб, 2931x2661
2931x2661
>>346100
>У меня, из типа фигурки можно достать её boolean[][] представление для четырёх положений вращений
И это тупо, потому что можно просто сделать интерфейс взаимодействия с этими массивами, а не выдавать их пользователю напрямую (и их же ещё копировать приходится, чтобы пользователь не смог их изменить). К тому же в таком случае необязательно будет генерировать четыре массива, достаточно будет одного одномерного массива, для которого будут по-разному генерироваться индексы в зависимости от заданного положения вращения при переводе (x, y) в индекс массива. То есть для initial положения это будет i = x frameWidth + y, для right положения i = 12 - 4x + y, и так же для оставшихся двух положений (пикрилейтед). Эту идею я нагло украл, но у себя ещё не реализовал.

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

И это я тоже не поправил, потому что я хотел по-быстрому перейти от своей корявой реализации, где координаты для всех сущностей указывались относительно начала координат
экрана* + можно было сделать сдвиг при рендере сущности на экран, к нормальной реализации с комбинирующимися трансформациями, но у меня не получилось сделать это быстро, и я даже не пришёл к компилирующемуся варианту.
Аноним 01/03/20 Вск 18:23:15 346973125
1458112737216.jpeg 313Кб, 1122x1700
1122x1700
>>346970
Тупые звёздочки, постоянно забываю. Но текст не важен, важны только картинки.
Аноним 02/03/20 Пнд 23:06:53 347402126
EMTZbKKVUAAuQ-K.jpeg 373Кб, 1770x2088
1770x2088
>>346970
>достаточно будет одного одномерного массива, для которого будут по-разному генерироваться индексы
Нет, так сделать не получится, у меня же оси вращения не всегда совпадают с центром коробки.
>проверка на то, можно ли вставить фигурку в какое-то место, делается внутри объекта-игрового поля, а сама фигурка безусловно двигается куда угодно
Я пытался поменять, но получалось только хуже и хуже. И я не знаю, как нормально реализовать wall-kick'и, если фигурка не может становиться в неправильные места, потому что очень часто волл кик состоит из смещения в неправильную позицию + поворота. И это можно было бы обойти, если добавить вид движения сдвиг-поворот. Но не знаю, выглядит как-то тупо. Или нет, я не знаю, всё просто выглядит очень уродливо.

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

И тогда всё будет работать корректно даже, если игровое поле будет наклонено, но мне лень это делать и я не вижу смысла.
Аноним 03/03/20 Втр 20:24:05 347689127
1568075961973.jpeg 305Кб, 1164x2048
1164x2048
Хотел поиграть в майнкрафт, но опять повторилась та же ерунда: внезапно откуда-то сверху упал крипер и мгновенно сдетонировал мне в лицо. И я опять потерял все вещи. Не так обидно, потому что я только-только зашёл в эту пещеру и ещё не успел насобирать ресурсов, но всё равно неприятно. Теперь ещё несколько недель не буду в это играть. Да я и как-то даже не знаю, что там можно делать, поэтому мало мотивации заходить в манкрафт.

Почему-то опять посреди дня начинает беспричинно клонить в сон, не знаю, как с этим бороться.
Аноним 04/03/20 Срд 00:57:09 347797128
1499640221206.jpeg 242Кб, 1044x980
1044x980
1443570268797.png 1953Кб, 1920x1080
1920x1080
>>347689
Всё же поиграл ещё немного и снова потерял очередной сет железной брони, немного заполненную карту и зачарованные кирку и меч. И опять помер от взрыва крипера, когда меня отбросило в яму с ним от чьего-то удара. Наверное, имеет смысл накопить левел, зачаровать алмазную кирку на эффективность, безопасно найти алмазы (не бегая по пещерам, а прокапывая коридоры на 11 уровне где-нибудь рядом с домом), сделать алмазную броню и зачаровать её на протекшн (а лучше, наверное, на бласт протекшн, но я не знаю, на каких уровнях появляется это зачарование). Может, тогда меня не будут ван-шотать криперы.

Всё же самый лучший способ набивания уровней - это фарм мобов по ночам. Возможно, стоит делать это в пустынях, потому что по ощущениям там спавнится гораздо больше враждебных мобов (ну, и по логике тоже: в пустынях, кроме зайцев, мирных мобов, так что, наверное, это оставляет больше возможностей для спавна агрессивных мобов; хотя всё равно не знаю, действительно ли там лучше спавн мобов настолько, чтобы мне имело смысл идти до ближайшией пустыни через всю карту), и ещё там хорошая область видимости, меньше шансов, что к тебе подкрадётся крипер.

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

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

А ещё нашёл карту сокровищ, ну, и сам сундук тоже. Там ничего интересного не было в целом, только вот эта круглая синяя штука, с помощью которой вроде как делается штука, которая позволяет дышать под водой, но у меня нет ракушек для этого, да и необходимости в этом тоже пока что нет.
Аноним 04/03/20 Срд 21:12:25 348133129
1561190723460.jpeg 571Кб, 2332x1713
2332x1713
1495857529517.png 458Кб, 1920x1080
1920x1080
1446178686695.png 2084Кб, 1920x1080
1920x1080
Играл ещё немного. Зачаровал кирку на эффективность 5, и так играть, действительно, значительно проще, надо было сделать так с самого начала. Вместе с эффективностью выпал ещё энчантмент на удачу (правда, только второго уровня), так что я довольно быстро набил кучу алмазов. Но с бронёй всё оказалось не так просто, мне никак не хотели выпадать нормальные энчантменты, так что у меня сейчас хоть и алмазная броня, но там какие-то абсолютно мусорные зачарования. И криперы всё ещё ван-шотают.

Почти около дома под землёй случайно наткнулся на спавнер скелетонов. Раскопал его и сделал лифт который их поднимает скелетов вверх, а потом сбрасывает вниз, чтобы потом можно было убивать их за один хит (если они без брони). Кстати, не знал, что теперь соул сэнд под водой создаёт водоворот, который выталкивает тебя наверх, при кольно. А блок магмы наоборот, затягивает вниз, так что можно сделать водяной лифт, который просто меняет местами эти блоки. Опыта с этой гриндилки не то чтобы много выпадает, но вполне можно накопить 30 уровень и выше. Стрел и костей выпадает очень-очень много. У меня были опасения по поводу того, будет ли оно вообще работать, потому как рядом со спавнером было какое-то аномальное количество подземных ущелий. На всякий случай осветил ближайшие пещеры, не знаю, сыграло ли это в итоге какую-либо роль.

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

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

Но перед этим решил впихнуть туда же массив из печек, которые бы работали одновременно и между ними равномерно бы распределялись топливо и те штуки, которые жарятся. И я просто бездумно взял дизайн мамбо джамбо https://youtu.be/yyyhxRztamE, который сделал эту штуку полностью на хопперах: сверху идёт труба из хопперов, которые подключены горизонтально последовательно друг к другу, и из последнего торчит иневертированный компаратор, который лочит ещё одну линию хопперов под первой линией, которые уже направлены в печки. И суть в том, что предметы затекают по верхней трубе, равномерно заполняют её, активируют компаратор последнего хоппера, всё сбрасывается в нижние хопперы, которые после этого опять лочатся (не пускают в себя айтемы из верхних), пока новые N айтемов не заполнят верхнюю трубу.

И это красивая идея, но проблема в том, что у этой штуки какие-то кривые тайминги и иногда в некоторые печки не попадают предметы. И хопперы засоряются. И гораздо проще, дешевле и лучше было бы просто сделать вагонетку сверху, которая бы останавливалась у сундука, заполнялась, а потом бы ездила по хопперам и равномерно распределяла айтемы.
Аноним 05/03/20 Чтв 02:19:35 348214130
1483417704728.jpeg 590Кб, 1859x2405
1859x2405
Я хотел начать делать, собственно, саму игру, но внезапно понял, что мне надо разделять анимации движения фигурки по горизонтали и по вертикали. То есть придётся сделать отдельные классы анимаций для движения по горизонтали и по вертикали. И это выглядит так тупо, потому что эти классы отличаются только несколькими строками, но я чего-то совсем не знаю, как сделать по-другому.

Вернее нет, по-другому можно было бы сделать: анимация сдвига на вектор, которые бы легко комбинировались, но не знаю, насколько правильно такое делать, накапливающаяся ошибка округления, всё такое. Хмм, ну, или сделать комбинирование двух анимаций движения, чтобы в итоге получилась одна жирная анимация. Но как их комбинировать, если каждая из них представляет из себя start_point, end_point и duration - непонятно. Даже при одинаковых стартовых точках непонятно. А ещё я ведь хотел, чтобы анимации падения фигурки на одну клетку вниз и сдвига вправо/влево отличались.

Наверное, правильным решением будет сделать один жуткий класс, который бы включал в себя и движение по горизонтали, и по вертикали, и для обоих хранил бы ещё длительность. Задавать длительность движения по какой-то из осей как -1, если объект не двигается по этой оси. И комбинировать эти анимации, чтобы более свежая переписывала старую, но не в местах, где у свежей стоит -1 в длительности. Чего-то тоже как-то тупо. Получается, надо ещё и для движения по каждой оси ещё и то, сколько оно длится на данный момент. Лучше всё же отдельно по иксу и по игреку сделать.
Аноним 05/03/20 Чтв 04:59:31 348220131
1583350713604.png 1263Кб, 1920x1080
1920x1080
1426274597192.png 749Кб, 1920x1080
1920x1080
1516111547819.png 1088Кб, 1920x1080
1920x1080
1475405189899.png 1542Кб, 1920x1080
1920x1080
https://youtu.be/FeTHFokfJY4?t=206
Довольно полезная интересная штука, я её впихнул себе в авто-плавильню. Как обычно всё выглядит максимально уродилво: я не утруждал себя особо выбором блоков, к тому же так совпало, что прямо над печками были эти пещеры. Вроде как должно работать, по крайней мере работает, если не загружать до отказа. А загружать до отказа мне нечем.

https://youtu.be/7FieCkACm5Y
Вот это тоже отличная штука, оказывается, нестакающиеся предметы дают более сильный сигнал, так что можно их отделять от стакающихся предметов. Пока я возился с печками, оказалось, что ферма скелетов работает слишком хорошо, и через некоторое время у меня всё вокруг было замусорено бронёй и луками, так что это супер-полезно. А после сортировки весь мусор можно сбросить в лаву дроппером с помощью какой-то такой хитрой штуки https://youtu.be/E6fvNU8LRkc?t=82

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

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

Аноним 05/03/20 Чтв 15:16:18 348333132
1580821580562.jpg 973Кб, 1227x1840
1227x1840
1458108169874.jpg 59Кб, 341x659
341x659
ясно
Аноним 05/03/20 Чтв 22:06:06 348475133
1552926738853.jpeg 1516Кб, 3157x4096
3157x4096
1428621186018.mp4 1254Кб, 360x680, 00:00:38
360x680
Немного делал это. Оно всё ещё некорректно работает, но теперь, по крайней мере, анимации не прерываются на середине, как это было на скрине выше. Я хотел сделать так, чтобы после падения фигурки была некоторая задержка (ARE) перед тем, как заспавнится новая фигурка. И я пока что хотел сделать так, чтобы она длилась ровно столько, чтобы все анимации завершились, но я чего-то всё заруинил и оно не работает нормально и нужно немного подрыгать фигурку, чтобы стриггерить спавн новой. То ли какие-то анимации не завершаются, то ли ещё что-то.

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

Ну, это я поправлю, я думаю.
Аноним 06/03/20 Птн 02:27:18 348526134
1538775872799.jpeg 744Кб, 1492x2018
1492x2018
1551113290373.mp4 1828Кб, 360x680, 00:00:54
360x680
1547086285353.mp4 1053Кб, 360x680, 00:00:44
360x680
https://youtu.be/HvFsRQ2X9-4
Странно, я до этого не слышал этой песенки у него, хорошая.

Баг выше довольно легко исправился, я уже и не помню, что там конкретно было не так. Так что теперь оно по крайней мере играбельно.

Засунул упавшие блоки в красно-чёрмный tree map из координат блоков в сами блоки-сущности (до этого они просто в списке лежали), где они лежат упорядоченными сначала по игреку, а потом по иксу. Не знаю, насколько это тупое решение. После падения очередной фигурки проверяю только те ряды блоков, которые потенциально могли заполниться (те четыре, которые занимает фигурка). Убираю их, прохожусь по всем блокам выше удалённых линий и опускаю их. А потом переназначаю tree map: удаляю старые координаты, добавляю новые.

Анимации падения блоков вниз пока что нет, так что падающие блоки без спрайтов отрисовываются.

Написал в итоге кучу мусора, потому что хотел поскорее получить что-то работающее. Чуть позже придётся вычищать.
Аноним 06/03/20 Птн 16:42:11 348648135
1579870747444.jpeg 267Кб, 1373x1930
1373x1930
1518644972808.mp4 1255Кб, 360x680, 00:00:37
360x680
думаю, можно так оставить
Yuyuko !hhoO7CxTZY 06/03/20 Птн 18:27:38 348666136
Аноним 06/03/20 Птн 18:27:47 348667137
1564275380106.jpeg 23Кб, 694x810
694x810
1478930096883.mp4 2769Кб, 360x680, 00:01:22
360x680
Теперь вроде анимация падения более-менее работает, но всё реализовано просто ужасно, надо очень много всего переделать, чтобы оно выглядело приемлемо.
Аноним 06/03/20 Птн 21:24:52 348722138
1583519092138.jpg 182Кб, 1400x1000
1400x1000
Думаю, минут через 10 сяду заниматься.
Аноним 06/03/20 Птн 23:59:08 348751139
1550458581888.jpeg 206Кб, 1232x2048
1232x2048
Можно считать, что не позанимался, потому что ничего толком не получилось и я тупил с простейшими вещами. Мне хочется списать это на то, что я сегодня себя нехорошо чувствую, как будто бы у меня температура повышенная, но какой смысл, это будет просто очередной попыткой оправдать себя. А дедлайн, получается, всего лишь в течение двадцати дней, а я как бы, да, всё ещё абсолютно нулевой.

Я вообще не понимаю, как течёт время, оно как будто бы идёт рандомными прыжками в два-три часа вперёд. Между ними всё в порядке, но это в порядке длится не то чтобы сильно долго. Так умру и не сам замечу ведь. Вообще по ощущениям я посреди одного большого ничего, и, если даже я попытаюсь сделать шаг в какую-то сторону, то это ни на что не повлияет, и я просто окажусь в той же точке, что и был.

В теории надо просто, действительно, делать то, что должно и особо не задумываться о том, какие могут быть последствия и вообще к чему это всё приведёт, но это полная противоположность тому, что вроде как следует делать? вот это всё постановка и достижение маленьких целей. Короче, at the end of the day всё это абсолютно какой-то мусор.
Аноним 07/03/20 Суб 04:17:18 348779140
1504143261258.jpeg 122Кб, 1060x1500
1060x1500
Сомнительные решения

Добавил метод getGlobalTransform(Entity), который может для некоторой дочерней сущности выдать какой-то особый глобал трансформ (вернее дефолтный глобал трансформ с дополнительным преобразованием). Если дочерняя сущность нуждается в каком-то дополнительном преобразовании, то она должна переопределить метод needsAdditionalTransform(), чтобы он там когда-нибудь в своей жизни возвращал true. И тогда, если у родительской сущности есть это особое дополнительное преобразование для этой сущности, то оно применяется.

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

И я в итоге умудрился всё сломать, и теперь у меня полезло куча странных багов, и самое неприятное, что я не могу толком их повторять, поэтому непонятно, были ли они и до этого, или это только сейчас всё сломалось.
Аноним 07/03/20 Суб 04:29:41 348780141
1583544579945.jpg 433Кб, 2017x2048
2017x2048
>>348779
Так, да, второй абзац нельзя читать, его не существует [ДАННЫЕ УДАЛЕНЫ]
Аноним 07/03/20 Суб 15:31:37 348865142
1577079913481.jpeg 319Кб, 2048x1431
2048x1431
Думаю, минут через 10 сяду заниматься.
Аноним 07/03/20 Суб 18:48:04 348911143
1504466564169.jpeg 233Кб, 1536x2048
1536x2048
Немного занимался, понял, что я ещё больший ноль, чем я думал, и что всё это в итоге бесполезно. Не знаю, стоит ли вообще продолжать что-то пытаться сделать.
Аноним 07/03/20 Суб 20:44:28 348955144
1538282250268.jpeg 398Кб, 1000x1414
1000x1414
Ещё немного занимался, толком не продвинулся, но не сказал бы, что это было зря, если принять за истину небесполезность того, чем я занимаюсь.
Аноним 07/03/20 Суб 22:25:48 348986145
1544369981605.jpeg 534Кб, 2194x4096
2194x4096
1483145912264.png 2974Кб, 1920x1080
1920x1080
1495930119510.png 871Кб, 1920x1080
1920x1080
1494376059538.png 851Кб, 1920x1080
1920x1080
Максимально неудачная попытка найти что-нибудь интересное (джунгли / ледники / месу / храм в пустыне / особняк тех злобных парней, не помню, как они называются / хижину ведьмы / про какой-нибудь грибной биом я вообще молчу). Почти всю верхнюю карту, видимо, занимает тёплый океан с кучей коралловых рифов, не знаю, зачем они нужны, они только при кольно светятся под водой. Ну и нашёл деревню пустыне и один аутпост, от которого толку тоже особо никакого, как я понимаю.
Аноним 08/03/20 Вск 04:13:22 349056146
1543749703197.jpeg 185Кб, 1000x1585
1000x1585
>>348779
Вроде что-то поправил, вроде стало получше выглядеть, а вроде и не изменилось ничего. Вообще по сути никак не продвинулся, только сделал так, как изначально стоило сделать, и вроде как не наплодил ошибок особо. И поэтому даже показать нечего, потому что всё выглядит ровно так же, как и было до этого.
Аноним 08/03/20 Вск 20:17:45 349231147
1541986718623.jpeg 1652Кб, 2480x3508
2480x3508
Думаю, минут через 10 сяду заниматься.
Аноним 08/03/20 Вск 22:50:35 349312148
1481995594652.jpeg 319Кб, 1415x1415
1415x1415
Да, короче, да, никакого толку от этого, это всё ничего не меняет, можно даже не пытаться.
Аноним 09/03/20 Пнд 04:20:21 349363149
1455429014282.jpeg 246Кб, 1443x1100
1443x1100
1575712453119.mp4 3444Кб, 360x680, 00:01:33
360x680
Что-то такое. Для этого пришлось немного изуродовать и без того некрасиво выглядящий код. Может, потом попытаюсь исправить как-то.
Аноним 09/03/20 Пнд 04:28:19 349364150
1467906026922.jpeg 766Кб, 2400x3400
2400x3400
>>349363
>Что-то такое
Ээ, то есть я хотел сказать, что добавил анимацию пропадания блоков.
https://youtu.be/JnpQEwxO67w
Yuyuko !hhoO7CxTZY 09/03/20 Пнд 14:47:23 349441151
>>349364
Довольно милая анимация
Аноним 09/03/20 Пнд 16:43:43 349467152
1561056083945.jpeg 3961Кб, 2000x2910
2000x2910
1549920394555.png 1012Кб, 2480x3508
2480x3508
Проблема в том, что сейчас последовательность анимаций реализована как смена состояний падающей фигурки и игрового поля. У фигурки есть два состояния падения (soft drop - падает сама по себе, forced drop - когда зажимаешь клавишу, чтобы падала быстрее), и ещё есть состояния wall kicked (в течение сдвига, который может выполняться после поворота фигурки, чтобы попытаться её уместить в игровое поле), fell (когда фигурка упала на дно, но её всё ещё можно двигать и вращать) и locked (упала и с ней уже ничего нельзя делать).

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

Всё это выглядит очень так себе, и вроде как корректным решением будет реализовать у себя что-то вроде этого:
https://youtu.be/NYFeFUxU6DI

Но я так и не придумал нормально, как это всё наложить на свою штуку. (Но определённо надо избавиться от лишнего состояния для падающей фигурки, и засунуть их все в список состояний игрового поля.) И, если воспринимать этот animation graph как несколько связанных между собой состояний, между которыми можно перемещаться по определённым правилам, то не совсем понятно, как реализовать анимации, которые могут выполняться одновременно.

Я не знаю как это реализовать по-другому, кроме как запихать все анимации, которые могут выполняться одновременно, в один супервайзер объект (который я тут отметил как blend space, но это, наверное, не совсем то, по крайней мере потому, что у меня сумма анимаций невзвешенная), который бы их все одновременно вызывал, и который бы представлял из себя отдельной состояние. Но это означает в общем случае, что либо эти супервайзер объекты будут максимально раздуты, чтобы уместить в себе все анимации, которые в теории могут сочетаться друг с другом. Либо, что будут супервайзер объекты с повторяющимися анимациями.

И ещё я не могу придумать, как адекватно сделать триггер перехода между состояниями. Это должно быть какое-то условие, определённое внутри самого состояния, или переход должен триггерить кто-то снаружи? Если это кто-то снаружи, то как он может знать, в какое состояние дальше можно перейти.
Аноним 09/03/20 Пнд 16:45:14 349469153
1460187784547.jpeg 259Кб, 900x1273
900x1273
Аноним 10/03/20 Втр 23:36:47 349948154
1479249804057.jpeg 823Кб, 4093x2894
4093x2894
Думаю, минут через 10 сяду заниматься.
Аноним 11/03/20 Срд 03:03:02 349980155
1573207267691.jpeg 322Кб, 1492x2048
1492x2048
Немного занимался.
Аноним 12/03/20 Чтв 03:14:45 350222156
1482862070735.jpeg 972Кб, 1378x2034
1378x2034
1511692298726.mp4 5256Кб, 360x680, 00:01:47
360x680
Эм, да, оно выглядит абсолютно так же снаружи, но, я думаю, потенциально стало немного лучше внутри (ну, ладно, ещё не совсем, но в перспективе ещё нескольких коммитов, думаю, станет). И я ттутт не про кирпичики, тёмные кирпичики выглядят ужасно и плохо сочетаются с яркими перенасыщенными цветами фигурок, но, с другой стороны, это всё ещё лучше светло-серого фона, который был до этого, это просто временная мера, потом нарисую что-то более приемлемое.

Яя примерно про то, что было тут >>349467 на картике. Раньше у меня анимации хранились в самих сущностях, триггерились снаружи методами, максимально абстрагированными от внутренней реализации сущностей (то есть достаточно было вызвать метод поворота для фигурки, чтобы она начала поворачиваться). Но такой подход плох тем, что у тебя нет никакого дополнительного контроля над анимациями (Если честно, я уже забыл, какой у меня был ход мыслей, и какой дополнительный контроль над анимациями я хотел получить. Ну, как минимум я хотел их прерывать, а ещё понимать, в какой момент они завершаются.)

Короче, в итоге я засунул все анимации вместе с анимируемыми объектами в один такой animation manager, единственное преимущество которого, на самом деле, это то, что он у меня позволяет подписываться на события завершения анимаций, так что я этим, во-первых, избавился от необходимости в активном ожидании того, пока закончится какая-то анимация, чтобы что-то произошло, а, во-вторых, это позволило засунуть всю игровую логику в один метод changeState(newState), который переходит к новому состоянию, попутно выполняя какие-то действия, и он как правило вызывается вот как раз после завершения всяких анимаций. Скорее всего, это тупо, потому что у меня теперь все тайминги зависят от таймингов анимаций. Но, по крайней мере, теперь я смогу значительно проще реализовать некоторые штуки, которые хотел добавить.

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

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

Сейчас же у меня все анимации хранятся в одном списке в animation менеджере в слишком абстрактном виде, который позволяет только выполнять анимации, и, хоть я и могу выделить в этом списке именно анимацию поворота, мне придётся её кастить, чтобы получить доступ к параметрам анимации поворота, а так мне не особо хочется делать, хоть это и сработало бы, да. Я попробовал что-то сделать без этого, но у меня ничего не вышло. Когда игрок нажимает на кнопку поворота у меня есть только:
- текущий визуальный угол поворота фигурки
- текущий логический поворот фигурки (то есть то, как она повёрнута на игровом поле в терминах клеточек, на 0/90/180/270 градусов)
- то, какой надо сделать логический поворот (против часовой стрелки или по часовой)
- знание о том, есть ли у фигурки уже какая-то анимация поворота

И я не знаю, что мне с этим делать. До этого у меня было так, что последовательные повороты в одном направлении раскручивали фигурку чуть быстрее, а поворот в противоположном направлении мгновенно начинал её вращать в новом направлении. Но сейчас у меня нет знания о том, в какую сторону сейчас вертится фигурка.
Рируру !!gYmpHned/k 12/03/20 Чтв 05:11:36 350229157
eMz-4w8N5gA.jpg 242Кб, 1200x1145
1200x1145
>>350222
Классно. Я вроде читал у @oldnewthing, что верное средство создать у бета-тестеров впечатление о масштабности внесённых в операционную систему изменений — изменить дефолтные обои рабочего стола.

Хм, может, было бы удобно иметь в анимации метод вроде conflicts(Animation other) или tryCombine(Animation other), с которыми она могла бы самостоятельно изъявить желание заменить собой другую анимацию, возможно, учтя параметры заменяемой: например, ускоренное движение со специальным параметром initialSpeed = DONT_REALLY_CARE может взять текущую скорость объекта за начальную, а поворот — в зависимости от того, выполняется он в ту же сторону или в другую, продолжить кручение объекта по денормализованному углу или развернуться в другую сторону по кратчайшему. Эти методы внутри себя всё равно потребуют приведений вниз (но эй, чем это хуже Object.equals), зато это позволило бы хранить анимации в списке Animation, с коллбэками завершения в их полях — мотив распечатать Animation, лишить его абстрактности. Представь себя в ♂animation gym♂ на месте анимации-новичка, когда тебя подводят по очереди к остальным и спрашивают: «слился бы с ним?». Возможно, коллбэку понадобится дополнительный параметр, указывающий причину завершения анимации — естественное завершение, замена другой и т. д., от которой может зависеть логика.

Мне кажется, в Java коллбэкам не нужны пользовательские аргументы, как у тебя String, т. к. можно на месте объявить анонимный класс, реализующий CallbackHandler, который запомнит в своих полях, или зачастую вовсе как замыкания, всё, что ему нужно, с правильными типами без поехавших приведений (привидений): https://ideone.com/MLsMsb.
Аноним 13/03/20 Птн 01:26:05 350485158
1557985443289.jpeg 305Кб, 1416x2000
1416x2000
>>350229
>иметь в анимации метод вроде conflicts(Animation other) или tryCombine(Animation other)
Даа, была такая идея ещё до того, когда я впихнул свой animation gym. Наверное, да, это лучшее решение, которое тут может быть.
>анимации в списке Animation, с коллбэками завершения в их полях
Проблема с тем, чтобы триггерить коллбэки прямо по завершению анимации в том, что коллбэк может изменять список анимаций, пока мы всё ещё итерируем по списку, занимаясь апдейтом анимаций. Сейчас у меня очень тупой обход этой проблемы: коллбэки хранятся внутри самого animation gym'а отдельно от анимаций и вызываются только после апдейта всех анимаций.

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

Может быть, можно сделать специальный wrapper объект вроде PostponedAction, которые бы складывались в очередь. Как бы, это вроде выглядит не очень сложно, но какое-то количество единиц времени назад, когда я занимался этим, я предпочёл забить на это. Может, сделаю потом.

>Возможно, коллбэку понадобится дополнительный параметр, указывающий причину завершения анимации — естественное завершение, замена другой и т. д., от которой может зависеть логика.
Выглядит как хорошая идея, но пока что не могу даже намеренно придумать ей применение у себя. Может, потом возникнет необходимость в таком.
>мотив распечатать Animation, лишить его абстрактности
Яя, как-то не думал о таком, но вообще, да, это имеет смысл, и это подтверждает истинность правила тридцать четыре: если какая-то девочка ещё не была раздета, то есть хорошая мотивация сделать это.
>можно на месте объявить анонимный класс, реализующий CallbackHandler, который запомнит в своих полях, или зачастую вовсе как замыкания, всё, что ему нужно
О, да, совершенно не подумал об этом, хорошая идея.

Спасибо за со веты.
Аноним 13/03/20 Птн 03:03:49 350499159
1461691394237.jpeg 382Кб, 2428x3439
2428x3439
1493565075292.png 7Кб, 346x101
346x101
Немного занимался, кстати. Если не ставить под сомнение бессмысленность всего этого, это было относительно полезно. Больше ничего не делал, как-то плохо себя ощущал, вероятно, из-за того, что опять слишком поздно проснулся, заруинив стрик ранних пробуждений. Не мог заставить себя делать что-либо, только под конец дня вот удалось сесть позаниматься.

В ютубовских рекомендациях появилась возможность отсортировать выдачу по популярным среди твоей истории просмотра тегам, так что теперь у меня есть возможность в любой момент открыть большую стену с вокалоидными песенками (ну, или с видео по манкрафту, которые почему-то помечены тегом Mods). И там ещё есть с десяток тегов в списке, но они иррелевантны из-за того, что с ними у меня в истории просмотра связаны по одному-два видео, так что они плохо держатся на одном месте и быстро сменяют друг друга. В какой-то момент у меня появился тег 3D Modeling из-за того, что я посмотрел видео с топ 10 самых тяжёлых 3д моделей в яндере симуляторе.

Кстати, я абсолютно пропустил всё, что связано с яндере девом, и вообще забыл думать о существовании его игры примерно с того момента, когда она взорвалась популярностью сколько-то лет назад, но внезапно наткнулся на видео с бокалом молока и со спидранами по бану в его дискорде, и после этого я пересмотрел примерно всё, что есть на ютубе, связанное с ним, осталось только обсмотреться видео с, собственно, его личного канала с апдейтами игры, потому что мне они нравятся. И тут забавно примерно всё: и его поведение, и, возможно, даже в большей степени, реакция других людей на то, что ууу, какой он плохой, жесть перверт лоликонщик неблагодарная ленивая тварь, которая не умеет кодить и ворует ассеты, и вся ситуация в целом, из которой в итоге единственным победителем выходит, конечно же, он. Жалко немного, что я опоздал, всё уже закончилось, и идёт на спад, в том числе и его earnings per month на патреоне.

Кстати, интересный вопрос, который остаётся для меня открытым, это то, действительно ли использование else-if сильно менее эффективно, чем switch? Просто, ето, конечно, весело и забавно потешаться над его стенами из else-if'ов, но вряд ли это главная причина лагов в игре даже, если он сравнивает строки, когда мог бы сделать enum'ы. Просто забавно, как очень много кто на полном серьёзе объясняет плохую производительность вот этим вот, хотя проблема наверняка в чём-то другом, но просто гораздо легче сказать
>If you just used switch case statments the framerate wouldn't drop
>Those else if blocks. I counted like 90 else ifs in the code visible in the video
>your code is not optimized! Switch cases are simpler.
>...There's a function called "switch", ya know?
сойти за умного, потешить свою самооценку. Как бы, они не обёртывают это в шутку, они действительно высказывают своё мнение, указывают на его неправоту. И это то, из чего состоят примерно все видео/комментарии всяких рандомов по сабжу: уф, какой же он лох, я-то определённо лучше него, кто угодно может сделать лучшую игру, чем он. Вот это https://youtu.be/eXWsXmVybns простто золото, мне кажется, невозможно быть более самодовольным, высокомерным, уверенным в себе, ето меня очень сильно позабавило.

К слову
https://youtu.be/dlrjDvS7wxo
>GetComponent / AddCompoent are all expensive opertaions as mentioned. Unless components have been swapped to other instance ( which also isn't the best practice ) There should be a field that holds a Component. Putting them in Update() is literally saying " I'm stupid. "
>accessing a transform like 20 times in Update is bad for performance, because there is a transform hierarchy (you have to go from the local transform of the root object all the way down to the local transform of the object you are accessing) and the longer the hierarchy is, the more it costs to access or set the transform values, such as rotation and position. A better solution: access transform.position and transform.rotation one time and store those values into variables. then operate on the variables and set it back to the transform.position and transform.rotation at the end.
выглядит как что-то значительно более конструктивное и походящее на правду.
Рируру !!gYmpHned/k 13/03/20 Птн 10:53:42 350551160
rztWFMJsRg.jpg 150Кб, 640x480
640x480
>>350499
>Просто забавно, как очень много кто на полном серьёзе объясняет плохую производительность вот этим вот
Искать настоящую проблему — это работа, всё равно что просить критиков твоего рисунка нарисовать лучше, зная, что они заведомо не будут этого делать. Тем не менее, такие простые вещи выдают нуба без фундаментальной подготовки, который тем более срежется на чём-то сложнее и в целом. В лучшем случае этот нуб искренне не видит своей некомпетентности, но несоразмерное продвижение в интернете позволяет предположить худший вариант — нуб осознанно является подпрыгивающим кабанчиком с позицией «fake it until you make it», что легко может злить людей, пытающихся вкладывать душу в предметную область. Или у тебя от Щенка не было агрессии какой-то и зубы не скрипели?

Давеча прочитал на ёбаном.ит статью про мошенника-инфоцыгана с ником Winderton. Он, не зная программирования, стриг деньги и уважение с нешкольников за «менторинг», ведение стримов и создание видосиков по программированию, где он либо льёт воду, либо перепечатывает чужой код (вероятно, с другого монитора) и при малейшем отступлении от темы несёт такую дичь, что уши вянут. Можешь даже про свою Java посмотреть, только под стол не укатись: https://www.youtube.com/watch?v=8kmXmGvc9SA. YandereDev не очевидный мошенник, но тоже ворует материалы, стрижёт деньги со школьников и имеет проблемы с базовой компетентностью в занятии, о котором заявляет — так ли они отличаются?

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

switch позволяет специфичные оптимизации. Цепочка else-if эквивалентна ему, если операция получения и сравнения значений не имеют побочных эффектов, но компиляторы тупые и ввиду этого «если» легко могут перестраховаться и не применить к ней switch-специфичные оптимизации. Например, в Free Pascal есть девяносто восемь оптимизаций switch (впрочем, общепринятых): https://wiki.freepascal.org/Case_Compiler_Optimization, и я даже чуть-чуть прикладывал к этому руку: https://bugs.freepascal.org/view.php?id=31536.

>you have to go from the local transform of the root object all the way down to the local transform of the object you are accessing
Вообще-то с 99% вероятностью там что-то вроде
private Transform local, global;
private bool globalDirty;

public Transform Local {
  get { return local; }
  set { if (value != local) { local = value; globalDirty = true; makeChildsDirtyToo(); } }
}

public Transform Global {
  get {
    if (globalDirty) {
      global = parent.Global local;
      globalDirty = false;
    }
    return global;
  }
}

Всё равно 0 раз вызвать ‘get’ всегда будет быстрее, чем 1000 раз вызвать ‘uberFastGet’, я лишь хочу сказать, что эта претензия одного уровня оправданности с претензией к цепочке if-else.
Аноним 13/03/20 Птн 17:31:52 350689161
1584109910848.jpg 198Кб, 1271x1672
1271x1672
>>350551
>Или у тебя от Щенка не было агрессии какой-то и зубы не скрипели?
Было такое. Из-за этого в основном пришлось скрыть её тред в какой-то момент для сохранения своего здоровья. Впрочем, эти чувства имеют несколько иную природу я завистливое чмо с насекомыми в голове То же самое можно ведь сказать про тех, кто от балды называет причину лагов в игре: многие из них точно в такой же манере некомпетентны и, возможно, имеют ещё меньшие навыки в программировании, чтобы высказывать претензии на этот счёт. Представь, что ты бы играл в какой-нибудь DCSS, а я бы подсел рядом и каждый твой фейл комментировал словами вроде "уф, ну, неудивительно, что ты всё заруинил, надо было всего лишь сделать X", при том, что сам я в игре ничего не смыслю и никогда в неё не играл. Я вижу примерно так всю диванную аналитику, связанную с кодом яндере дева, в которой есть хотя бы малая толика серьёзности.
>YandereDev не очевидный мошенник, но тоже ворует материалы, стрижёт деньги со школьников и имеет проблемы с базовой компетентностью в занятии
Да, всё так, я не пытался его оправдать. И хейт, и лулзы абсолютно заслуженные.
>Цепочка else-if эквивалентна ему, если операция получения и сравнения значений не имеют побочных эффектов
Мм, да, как-то не подумал об этом, кстати.
> Например, в Free Pascal есть девяносто восемь оптимизаций switch (впрочем, общепринятых)
О, по нятно, прикольно.
>Вообще-то с 99% вероятностью там что-то вроде
Дааа, я тоже думал о том, что как-то странно то, что он объясняет дороговизну операции тем, что там просто надо по иерархии трансформов вниз спускаться.
Аноним 13/03/20 Птн 23:03:06 350810162
1571047830383.jpeg 404Кб, 1137x1617
1137x1617
Почему-то второй день не могу заставить себя толком ничего делать. Голова почти совсем не работает, почему-то постоянно кажется, что в помещении душно, а, как только открываю окно, так становится холодно. Таблетки и спрей для носа от аллергии так и не помогли, собственно, как я и думал, не знаю, что с собой делать, это просто ужасно, я даже не знаю, аллергия ли это, от меня действительно просто отмахиваются каждый раз, когда я прихожу ко врачу. И я даже не могу закончить этот день, потому что мне совершенно не хочется спать. А следующие два дня к тому же ещё и выходные дни, просто ужасно.
Аноним 14/03/20 Суб 03:08:11 350870163
1536251631554.jpeg 131Кб, 1300x1011
1300x1011
1510603329131.png 964Кб, 1920x1080
1920x1080
1582281758746.png 750Кб, 1920x1080
1920x1080
1559695539765.png 455Кб, 1920x1080
1920x1080
Совсем немного играл в это. Сделал рядом с фермой скелетов под землёй небольшую (на 45 блоков с посадками) автоматическую ферму сахарного тростника, и не очень далеко оттуда ещё посадил в несколько слоёв кое-что из растений (пшеницу, свеклу, картофель, морковь, арбузы и тыквы). В процессе абсолютно забыл, что сами блоки тыкв не вырастают на блоках камня, и долго не понимал, почему ничего не растёт.

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

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

Кстати, вот этот массив из печек работает просто отлично: складываешь всё в сундук, и оно само довольно быстро переплавляется. На броню так и не вышло выбить нормальные энчантменты, на лук тоже никак не выходит выбить бесконечность (хотя в этом и нет сильной необходимости, стрел у меня всегда достаточно, но одного стака стрел обычно не хватает, а два уже занимают слишком много место в инвентаре), но хотя бы есть power 5, огонь и анбрейкинг (и punch 1, который больше мешает). И на меч тоже постоянно выпадают мусорные зачарования.

Алсо нашёл ещё одну заброшенную шахту, в которой, в отличие от всех других, что мне попадались, был спавнер ядовитых пауков. Можно сделать ферму ниток. Достаточно будет поставить магма-блок и водой направить пауков к нему.
Аноним 14/03/20 Суб 23:56:54 351152164
>>350551
Я не понимаю, почему кабанчики злят задротов. Это же два разных варианта занятости.
Аноним 15/03/20 Вск 05:11:16 351183165
ETCbyDrUMAEJR30.jpeg 177Кб, 1191x1781
1191x1781
>>350485
>анимации в списке Animation, с коллбэками завершения в их полях
>Может быть, можно сделать специальный wrapper объект вроде PostponedAction, которые бы складывались в очередь.
Сделал так. Вообще опять переделал animation gym, теперь меня он более-менее устраивает, до этого там был какой-то ужас написан, боюсь вспоминать. Теперь вот так:

https://youtu.be/ksW7SuH6IAs

- Animation<AnimatedObject> - абстрактная иммутабельная штука, которую можно применить к объекту заданного типа с помощью perform(object, currentDuration, interpolation).

- AnimationWrapper<AnimatedObject> (я не придумал более нормального названия) - это wrapper для анимируемого объекта и анимации с ним связанной. Содержит в себе текущую длительность, которая апдейтится вызовом tick(). По завершению делает коллбэки с указанием причины (просто закончилась, закончилась путём применения силы, была прервана, была прервана другой анимацией).

- AnimatedObject<T, K extends Enum<K>>, где T - тип объекта, который анимируется, K - перечисление возможных видов анимаций. Хранит в себе объект и все незаконченные AnimationWrapper'ы. Можно добавлять новые анимации, прерывать старые, подписываться на уведомления о завершении анимаций etc. Сюда запихнул ту штуку с PostponedAction, чтобы не появлялось concurrent modification exception, когда коллбэки добавляют новые анимации или делают что-то со старыми.

- AnimationGym - сборище всех анимаций. Пока что остановился на том, что храню анимации для каждого вида сущностей (пока что это только фигурка и упавшие блоки) в хеш таблицах из AnimatedObject'ов. И пока что для каждого вида сущности есть отдельный набор методов для добавления/прерывания/доставания анимаций (ну, там есть для каждого действия генерик реализация, и конкретные методы просто вызывают её). И не знаю, как сделать так, чтобы избавиться от отдельного набора методов взаимодействия с анимациями для каждой сущности. Ну, вернее, наверное, знаю, но ещё не пробовал переделывать, потому что думал, что придумаю что-нибудь получше, что бы не включало в себя странные касты.

Внешне ничего не изменилось я надеюсь на это, я мог наплодить багов
Yuyuko !hhoO7CxTZY 15/03/20 Вск 06:45:47 351192166
>>351152
Думаю, его злит(злит ли) не кабанизм, а неприемлемое поведение и то, что они загрезняют комьюнити своим присутствием.
Аноним 15/03/20 Вск 07:44:50 351197167
>>351192
И как джуны по типу Щенка загрязняют комьюнити?
Yuyuko !hhoO7CxTZY 15/03/20 Вск 10:04:54 351217168
>>351197
Его бесят не просто нубы, с ними-то все в порядке, а нубы которые умничают хотя может и нет
Рируру !!gYmpHned/k 15/03/20 Вск 11:37:17 351243169
5bfc9d63210b298[...].png 906Кб, 1200x675
1200x675
>>351197 >>351217
Бля, заткнитесь оба нахуй. Не джуны, а разновидность кабанчиков, которая пользуется несовершенством общества, чтобы ходить по головам, имея реальные знания хлебушка. Будучи деструктивным для группы, это поведение поощряется индивидуальным отбором (отсюда быдло очень уважает изворотливость и умение наёбывать), поэтому требует пресечения извне. Я не верю, что это могло быть неочевидным из контекста, скорее кто-то не дочитал до третьего абзаца, а сразу стриггернулся на слово «Щенок» в первом. Ты >>351197, наверное, не читал обе истории, чтобы сложить 2 и 2:

— Как она использовала пизду вместо резюме.
>«а можно я завтра приеду и начну уже что-то делать, вы мне так понравились?» — «л... ладно, приезжай».

— Как она обшмонала и выгнала кого-то из какой-то шараги за то, что он пронёс телефон. На моей памяти люди и даже сельди входят в положение.
>Ахует, ваша пизда тупая выгнала моего корефана с экзамена и теперь он скорее всего не поступит в Казанскую Школу 21. Спасибо мразь. (...) Пиздец, я две недели готовился, ночи не спал, а пизда просто на поезде прокатилась.
Аноним 15/03/20 Вск 12:27:02 351270170
>>351243
Так это капитализм, кто дороже себя продал при всех своих потроха: резюме, вагина, навыки, то победил на рыночке. В чем проблема, ты не можешь в продажу себя?
Если ей платят, значит она или приносит пользу бизнесу или сосет кому-то в системе рынка

Ты серьезно приводишь историю, где она выгнала какого-то лоха, который пронес мобильный телефон у себя в анусе, хотя это запрещено, как пример ее...чего?
Yuyuko !hhoO7CxTZY 15/03/20 Вск 12:41:54 351280171
>>351243
они умничают кароч
Аноним 15/03/20 Вск 12:43:21 351281172
>>351280
Ты же дружила с Щенком, сестрой ее называла.
Yuyuko !hhoO7CxTZY 15/03/20 Вск 12:44:14 351282173
>>351281

Так я ее и не обвиняю, просто интерпретирую слова рируры более понятным языком.
Аноним 15/03/20 Вск 15:12:20 351365174
1538247288186.jpeg 492Кб, 1722x1460
1722x1460
Аноним 15/03/20 Вск 18:43:25 351467175
1494918305214.jpeg 845Кб, 822x1462
822x1462
Пытался немного заниматься, но абсолютно неудачно. Думаю, сейчас буду играть в манкрафт. Надо будет дотащить ещё двух жителей до дома и построить простенькую ферму жителей.
https://youtu.be/ZysJs-P0kNE
Аноним 15/03/20 Вск 20:05:39 351522176
1447681104534.jpeg 48Кб, 768x768
768x768
1464089793542.png 1354Кб, 1920x1080
1920x1080
1565212113741.png 487Кб, 1920x1080
1920x1080
1524437186195.png 1733Кб, 1920x1080
1920x1080
Дотащил жителей до дома в лодках, но одного из них случайно несколько раз огрел лопатой, пока пытался закопать, и, я подумал, что такими темпами он у меня вряд ли долго проживёт, так что пришлось идти искать адскую крепость (координаты к которой я уже успел потерять, так что пришлось искать её заново) за блейз палками для зельеварительной штуки, бородавками. Ну, и зелья мне нужны были не только для лечения жителей, мне ещё надо вылечить тех костяных коней, которые у меня заспавнились во время грозы. Я так понимаю, их только зельями можно вылечить, и ещё я хотел собрать немного глоустоуна и магма блоков про запас, так что мне довольно много всего надо было достать.

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

В этот раз не стал повторять предыдущие ошибки, и оставил алмазный эквипмент дома. Собрал пару блейз палок, в сундуках нашёл жесть шесть алмазов и два седла, нашёл бородавки, заскриншотил координаты и поскорее сбежал оттуда.

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

https://youtu.be/Q2o4v8iuNvI
Аноним 15/03/20 Вск 22:50:09 351575177
1457142841209.jpeg 229Кб, 1714x2048
1714x2048
>>351522
Играл в это ещё немного: хотел воспользоваться выбитым магма кремом, чтобы сделать зелье огнестойкости и выбить немного блейз палок. И я почувствовал себя достаточно уверенным, чтобы пойти в ад в своей модной броне и со всем модным эквипментом. Всё поначалу шло хорошо, блейзы не наносили мне абсолютно никакого урона (только в мили с очень маленьким радиусом, но они к игроку сами не лезут, так что они выглядели супер pathetic). И потом мне захотелось побегать и поискать ещё магма кубов, чтобы потом сделать ещё больше зелий огнестойкости, но внезапно упал в лаву. И действие зелья как раз закончилось примерно в этот момент. На самом деле, не так жалко эквипмент, сколько те блейз палки, которые я собирал, а ещё внезапно выпавшую голову визер скелета.

Короче, я так понял, в аду без зелья огнестойкости и без ботинок на смягчение падения вообще нечего делать: один неаккуратный шаг и ты летишь в пропасть. В лучшем случае на дне ничего не будет, в худшем - ты падаешь в лаву и все вещи сгорают.
Аноним 16/03/20 Пнд 02:01:54 351615178
1500522429467.jpeg 208Кб, 1448x2048
1448x2048
Если запущу манкрафт в течение следующих десяти дней хотя бы раз, то я мега чмоха на весь следующий месяц.
Аноним 16/03/20 Пнд 05:36:14 351624179
>>351615
Ты мега чмоха на весь следующий месяц, скринь.
Аноним 16/03/20 Пнд 11:37:07 351662180
1428994201813.jpeg 837Кб, 2000x2000
2000x2000
Аноним 16/03/20 Пнд 16:59:25 351748181
1456194640681.jpeg 1244Кб, 2500x1250
2500x1250
Почему-то пропустил эту песенку у него, только сегодня первый раз услышал. А она хорошая.
https://youtu.be/LNhsp5Pv1e4

Думал, может, опять начать бегать, но, видимо, пока что всё ещё слишком холодно, чтобы даже просто находиться на улице. Да и я не уверен, что сейчас и полминуты пробегу без остановки, потому что вот даже сейчас, когда вынужденно пришлось пройтись всего лишь километров 5, очень сильно устал и замёрз.
Аноним 16/03/20 Пнд 19:32:59 351818182
1498977182647.jpeg 459Кб, 1388x2048
1388x2048
1472777448791.mp4 248Кб, 640x480, 00:00:09
640x480
Жесть вот это да.
Аноним 17/03/20 Втр 03:57:15 351960183
1550041396947.jpeg 375Кб, 2914x2064
2914x2064
1440002515138.mp4 4721Кб, 360x680, 00:01:38
360x680
Опять ничего не изменилось внешне. Ну, вообще не совсем: на тот >>351183 момент у меня игра ломалась, если беспорядочно тыкать на кнопки, если очень удачно тыкать на кнопки, а ещё не было нормальных поворотов. А сейчас такого нет. Вроде как. Ну, почти.

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

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

И ещё поправил какое-то количество багов разной сложности. НО остался один, который возникает стабильно, и я толком не могу его повторить: почему-то иногда даже, если кнопка ускорения движения вниз отпущена, фигурка спавнится уже ускоренной, и я никак не могу повлиять на её скорость (вот на видео пятая упавшая фигурка (синяя палка) заспавнилась ускоренной). Понятно, что проблемы с управлением, но пока что я так и не понял, что не так.

И на видео я абсолютно не смог из себя ничего изобразить, тотальное унижение пока что сломанным рандомом и багами.
Аноним 17/03/20 Втр 04:04:35 351961184
1505420396353.jpeg 295Кб, 2508x3541
2508x3541
>>351960
>тотальное унижение пока что сломанным рандомом и багами
Я посчитал, что то, что я не умею играть, настолько тут не играет роли, что скорее упомянул среди причин плохой игры некие баги, которых на видео тут одна штука видна, и проявился он от силы два раза, ускорив мне падение фигурки. И в оба раза я удачно поставил фигурку.
Аноним 17/03/20 Втр 22:42:13 352217185
ETTPgxXUcAENKbA.jpeg 862Кб, 4096x2532
4096x2532
Аноним 18/03/20 Срд 01:48:58 352268186
1452313827553.jpeg 371Кб, 2048x1536
2048x1536
1459591662291.png 12Кб, 580x824
580x824
сегодня плохой день

делал это через немного кривоватое приложение glyphtracer от какого-то рандома https://launchpad.net/glyphtracer, которое векторизировало изображение (тут надо отметить, что если оно плохо векторизируется, то имеет смысл увеличить разрешение исходного изображения, а если выдаёю ошибку о переполнении какого-то списка, то придётся создать несколько фонтов и потом смерджить их), и потом немного фиксил в fontforge

написание собаки (которая at sign), амперсанда и знака вопроса честно украл со своей клавиатуры, потому что понравилось, как они на ней нарисованы
Аноним 19/03/20 Чтв 01:28:30 352585187
1514019731582.jpeg 905Кб, 1300x1011
1300x1011
Аноним 19/03/20 Чтв 18:03:30 352805188
1584630209206.jpg 227Кб, 1448x2048
1448x2048
мега чмоха 19/03/20 Чтв 22:45:09 352886189
1582238432894.jpeg 344Кб, 2200x1319
2200x1319
1484192159589.png 1572Кб, 1920x1080
1920x1080
1501555404137.png 1301Кб, 1920x1080
1920x1080
1501034395652.png 813Кб, 1920x1080
1920x1080
>>351615
Одного из жителей пришлось прирезать, потому что тот никак не хотел менять свою профессию на фермера. Причём я так и не понял, когда он успел найти себе профессию, пока я его тащил до дома. Видимо, в какой-то момент я протащил его рядом со стоун-каттером. Но даже, когда я убрал все стоун-каттеры в округе, то он всё равно не поменял профессию.

Пришлось притащить нового жителя. Не знаю, как он умудрился выжить при перевозке.

И у меня почему-то пока что так и не получилось запихнуть двух жителей вот в коробку рядом с жителем-фермером https://youtu.be/VTseLpa9Iyc. Они у меня почему-то на утро постоянно сбегают из неё. Может, я как-то кровати неправильно поставил, не знаюю.

https://youtu.be/qtuX4cHk-vE
мега чмоха 19/03/20 Чтв 23:08:03 352889190
1483599098935.jpeg 681Кб, 2048x1586
2048x1586
1467684400882.mp4 2021Кб, 1024x800, 00:00:37
1024x800
1560211188003.png 17Кб, 1024x800
1024x800
Теперь так. Хотел изначально сделать зелёным, но потом вспомнил, что мне нравится фиолетовый. Не знаю, что делать с верхними кирпичами. Сначала хотел в верхнем ряду сделать жирные кирпичи, но это смотрится не очень. То, что на видео, тоже как-то не очень выглядит.

Текст статичный пока что.

https://youtu.be/Ngj9bXui9EQ
Аноним 20/03/20 Птн 21:58:36 353168191
1520129741366.jpeg 425Кб, 595x959
595x959
Ничего не делал. Исправил только, наконец-то, баг с
>>351960
>почему-то иногда даже, если кнопка ускорения движения вниз отпущена, фигурка спавнится уже ускоренной, и я никак не могу повлиять на её скорость
И починил сложение анимаций поворотов: до этого у меня там было что-то совсем странное и не особо работающее.

https://youtu.be/0RU_05zpETo
мега чмоха 20/03/20 Птн 22:17:12 353169192
1449278593785.jpeg 444Кб, 2048x1104
2048x1104
>>353168
>починил сложение анимаций поворотов
А, нет, не починил, всё равно не работает так, как я хотел.
Аноним 21/03/20 Суб 18:54:14 353387193
1536275261668.jpeg 190Кб, 1100x1661
1100x1661
1458072563438.mp4 1311Кб, 1024x800, 00:00:24
1024x800
хочу какую-нибудь такую анимацию
пока что работает не очень корректно
Рируру !!gYmpHned/k 21/03/20 Суб 22:57:59 353479194
ghost twist.gif 337Кб, 900x600
900x600
>>353387
Можно превращать фигурку в «призрака», если в ходе поворота она пересекает другие, хотя я уже даже не уверен, что это сколь-нибудь лучше того, что есть.

Не читай:
На гифке заметно, особенно на крайнем нижне-левом блоке вращаемой фигурки, что интерполяция между двумя положениями в стиле «интерполяция смещения + интерполяция поворота» ведёт себя не совсем естественно: блок словно смещается левее идеального промежуточного положения.

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

По слухам, «красивый» вариант с интерполяцией смещения по дуге получается автоматически, если трансформация выражена двойным кватернионом вместо пары смещение+поворот. Но у меня до сих пор не дошли руки разобраться, что это вообще такое, поэтому тс-с, я ничего не говорил.
Аноним 22/03/20 Вск 01:00:36 353514195
1444500982055.jpeg 1399Кб, 3328x2127
3328x2127
>>353479
Аа, ты вот такое имел в виду. Понятно.
Аноним 22/03/20 Вск 14:52:57 353708196
1448792027366.jpeg 530Кб, 2150x3035
2150x3035
Кстати, посмотрел космического денди, хороший мультик.
Аноним 23/03/20 Пнд 15:30:08 354051197
1584966607227.jpg 403Кб, 2000x1414
2000x1414
Сегодня в первой половине дня файтился с даст баннизами в подвале дома своих родителей. Вроде не так уж и много времени ушло на это, но по ощущениям как будто сутки на каменоломне проработал. Комп не стал вскрывать, он вряд ли работает как эмиттер пыли, разве что как пылесос, а это мне только на руку. Может, мне так плохо в последнее время было из-за пыли, и теперь получше будет. Не знаю пока что, но надеюсь, что это так.
Аноним 24/03/20 Втр 01:39:51 354236198
1443175056006.png 169Кб, 900x900
900x900
1448989568927.mp4 2295Кб, 1024x800, 00:00:41
1024x800
>>353479
Черновой вариант этого. Иногда срабатывает, а иногда - нет. Точно не срабатывает, когда фигурка дополнительно сдвигается, чтобы она умещалась внутри рамок поля, но это легко поправить: я просто почему-то использовал локальные трансформы вместо глобальных (дополнительный сдвиг у меня в глобальном трансформе делается). Почему в остальных случаях не срабатывает, пока что не знаю (хотя, может, это просто из-за того, что я только смотрю, пересекает ли фигурка упавшие блоки на 50% поворота, и как раз на 50% она ничего не пересекает).

Пока что всё работает тупым перебором пересечений отрезков фигурки со всеми отрезками всех упавших блоков, но точно стоит ограничиться только теми, которые лежат рядом, а, возможно, ещё лучше хранить где-нибудь вот ету поверхность верхнюю из упавших блоков (я не знаю, как объяснить, ну, вот это то, что сверху) и проверять пересечения только с её отрезками.
Аноним 24/03/20 Втр 04:15:50 354243199
1571041876521.png 287Кб, 900x826
900x826
Чего-то не вышло в итоге ничего хорошего, придётся потом немного переделать.
Рируру !!gYmpHned/k 24/03/20 Втр 07:35:55 354278200
168c8016014947b[...].jpg 221Кб, 958x1340
958x1340
>>354236
Я опять пошутил, убери сейчас же, это отвратительно. (つд⊂)
Аноним 24/03/20 Втр 11:53:41 354336201
1585040020576.jpg 186Кб, 2048x1344
2048x1344
Аноним 24/03/20 Втр 16:30:42 354411202
1585056631186.jpg 470Кб, 2048x2048
2048x2048
Дда ну его, ваш этот бег, слишком холодно, ещё и людей так много на улице, какой ужас, отвратительно, окончательно из-за этого настроение испортилось.
Аноним 24/03/20 Втр 20:39:20 354470203
ET4YeOAWsAMDEn-.jpeg 603Кб, 2508x3541
2508x3541
2020-03-24 20-3[...].mp4 564Кб, 1024x768, 00:00:18
1024x768
Такая штука. Нужно научиться находить у них контур.

Мышка окончательно погибла: делает дабл клик, когда не надо, если удерживать нажатие на клавишу, то оно не удерживается и прерывается.
Yuyuko !hhoO7CxTZY 24/03/20 Втр 20:44:22 354473204
>>354470
Можно еще сделать, что бы между точками чертились линии, тогда будет непрерывно
Аноним 24/03/20 Втр 20:47:43 354476205
1544921735367.jpeg 87Кб, 1222x640
1222x640
>>354473
Да, тоже была такая идея. Но тут не особо принципиально, как оно рисует: мне просто нужна была вот эта рисовательная штука для тестирования другой штуки, которую буду делать потом.
Аноним 24/03/20 Втр 23:48:26 354522206
1488712010585.jpeg 339Кб, 2048x1152
2048x1152
1472103723063.mp4 1462Кб, 1024x768, 00:00:44
1024x768
mda
Yuyuko !hhoO7CxTZY 24/03/20 Втр 23:54:12 354524207
Рируру !!gYmpHned/k 25/03/20 Срд 01:10:29 354542208
objects.png 649Кб, 1600x1600
1600x1600
>>354336
Я породил монстра...

>>354236
Для того, чтобы не перебирать все отрезки, можно использовать ГИПЕРПРОСТРАНСТВЕННЫЕ ДЕРЕВЬЯ: рекурсивно разбивать сцену на половинки, описывать вокруг них объёмы и затем проверять первым делом пересечения с этими объёмами (https://2ch.hk/dr/src/17085/14929361443541.gif).

Наивная реализация может выглядеть так: https://ideone.com/or6C3W (см. картинку). Дерево перестраивается вручную, вызовом .rebuild().

Я делал автоматическое перестраивание узла при накоплении порогового объёма искажений: https://2ch.hk/dr/src/17085/14929361443350.gif (искажённость отражается красной полоской вверху узла), но это
— вдвое сложнее
— вводит стрёмную эвристику
— как-то омежно, сравни
>П-привет, я-я добавлю в тебя объект мм... ты могло бы перестроиться, кхм, пук, ну или если не хочешь, то ладно...
с альфачёвским
>Сосочка-деревце, почему медленное, сейчас будешь быстрое. Давай не стесняйся, тридцать микросекундочек на перестроиться и жду для выполнения запросов. MIN_LEAF_NODE_SIZE — тебе.

А сейчас посмотрел свежим взглядом и начал подозревать, что нужно было всего лишь модифицировать для этой цели любое самобалансирующееся дерево: хранить в каждом узле описанный объём поддерева, который при поворотах/добавлениях/удалениях перерассчитывается как this.bb = AABB.bound(left.bb, right.bb) (и при необходимости это пропагейтится вверх, как, впрочем, и сами повороты) и ВСЁ, а все эти автоматические или ручные перестраивания были принципиально неверной идеей, всё равно что вместо TreeMap постоянно АВТОМАТИЧЕСКИ ИЛИ ВРУЧНУЮ пересортировывать массив.
Аноним 25/03/20 Срд 01:52:23 354547209
1467560844661.jpeg 136Кб, 1563x1008
1563x1008
1570178597863.mp4 978Кб, 1024x768, 00:00:23
1024x768
Хотел сделать так, чтобы контур закрашивался тёмным цветом, внутренности - светлым, а всё, что снаружи - не закрашивалось бы, но получил эпилепси ворнинг.
Аноним 25/03/20 Срд 01:56:05 354548210
1484593579906.gif 1606Кб, 600x367
600x367
>>354542
За десять секунд ничего не понял, но при кольно. Я чуть позже почитаю, когда с тем, что сейчас делаю, расправлюсь, я не умею в мультитаскинг.
Аноним 25/03/20 Срд 21:28:26 354838211
1431001819602.jpeg 1315Кб, 1200x1928
1200x1928
1519994060037.mp4 1714Кб, 1024x768, 00:00:46
1024x768
Как будто бы работает, но этого не видно, но там слишком много лишних вершин/отрезков.
Yuyuko !hhoO7CxTZY 25/03/20 Срд 23:01:58 354855212
Аноним 26/03/20 Чтв 01:59:23 354876213
1536717511554.jpeg 181Кб, 2048x1236
2048x1236
1495602292278.mp4 1851Кб, 1024x768, 00:00:58
1024x768
Такое. Не совсем то, что я хотел в плане реализации, но ладно, уже не имеет значения.

>>354855
Не знаю.
Рируру !!gYmpHned/k 26/03/20 Чтв 09:20:16 354943214
previewfile1231[...].jpg 488Кб, 1080x1080
1080x1080
>>354876
Is this your tool for planning military operations and establishing zones of influence? So pity to see your pacifist belief system being left long in the past.
Аноним 27/03/20 Птн 04:33:13 355175215
ET2UWLU8AEiBxP.jpeg 198Кб, 1450x2048
1450x2048
>>354542
Понятно, прикольно. Ненавижу этот тупой и-дэ-е-ван из-за того, что он беспричинно делает перенос строк, зачем это вообще нужно, это же не вим какое-то, где это ещё можно понять.

>public double get(int cid)
Сначала подумал, что как-то не очень выглядит, но потом передумал.
>Пересекаются ли отрезки a0–b0 и a1–b1.
>https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect
Не знаю, что не так с этим сайтом, но я не могу отделаться от того, что непроизвольно мой внутренний голос приобретает индийский акцент, когда читаю текст. Кстати, а не будет ли немного лучше вытащить случай с тем, что конец одного отрезка принадлежит продолжению другого из общего случая? Ну, то есть просто заменить "o1 != o2 && o3 != o4" на "o1 o2 < 0 && o3 o4 < 0"? Чтобы обработать этот случай не кросс-продуктом, а просто сравнениями координат.
>public static AABB bound(int count, Function<Integer, AABB> ithBB)
>Vec2.Vec2(x, y)
>Node без конструктора с ручной расстановкой значений полей
страшилка на ночь

Ну а так да, по нятно, как оно там делает разбиения и описывает объёмы, прикольно. Ну да, с самобалансирующимися деревьями было бы прикольнее, да.
Аноним 27/03/20 Птн 16:33:29 355282216
1479833663078.jpeg 94Кб, 692x1024
692x1024
Думал, что, наконец-то, пройду в TBoI мега сатану за лоста: нашёл D20, тринкет на батарейки и пакет на голову, размножил кучу предметов (на уровне прямо перед боссом мамой), выбил на всякий случай дохлую кошку, и вроде как всё, все комнаты теперь проходились за пару секунд вне зависимости от того, комната босса ли это или обычная комната, и у меня куча жизней, но потом я вспомнил, что у меня нет второй половинки ключа, и дальше мне попадались только комнаты дьявола, и ни одной комнаты жертвоприношений, или секретной секретной комнаты, где была бы статуя ангела. Короче, в итоге просто зря потратил время, и ничего не прошёл, мда, отвратительно.
Рируру !!gYmpHned/k 27/03/20 Птн 19:44:08 355302217
ERtRqbkUwAEuzLG.jpg 259Кб, 1500x900
1500x900
>>355175
>public static AABB bound(int count, Function<Integer, AABB> ithBB)
>страшилка на ночь
Да ты охуел! Я специально не убирал этот код, несмотря на то, что он не используется, потому что это же шедевр, я гений нахуй.
Более идиоматично сделать это итератором, но они вроде как не умеют rewind, а что если алгоритму понадобится больше 1 прохода или вообще случайный доступ, м, м-мм??? Например, так будет с поиском минимальной сферы, описанной вокруг N других.
— Тебе приятно будет при интуитивном сходстве видеть, как AABB.bound работает с итератором, а Sphere.bound — с функцией int->Sphere?
— Или ты предпочитаешь складывать всё во временные списки, хотя, уж не знаю, плодит это мусор в куче или умная Java всё красиво разруливает и выделяет на стеке, но ведь это банально даже не удобнее?
Бонус: https://ideone.com/8iKwBz.
Переделал на IntFunction, чтобы избавиться от боксинга; я не знал, что она существует, и при этом не хотел вводить свой интерфейс. Или ты с самого начала это и имел в виду?.. (T︹T)

Остальное — осознанные страшилки, но:

Node — внутренний класс, его не предполагается выдавать пользователю. Может, ещё через геттеры и сеттеры с ним работать?
К тому же возможна следующая оптимизация. Вспомним, что делает .rebuild():
root.collapse();
root.divide();
То есть мы сплющиваем дерево, передавая объекты корню и выбрасывая промежуточные узлы, а затем переразбиваем, выделяя новые. Но можно было изначально не выбрасывать их, а сложить в связный список — даже не нужно вводить специальное поле под next, можно переиспользовать left. Затем в ходе divide мы, пока возможно, не new'аем узлы, а достаём из этого списка и используем снова. Всё ещё хочешь присваивать поля в конструкторе вместо того, чтобы переиспользовать присваивания без различия между new'нутым и достанным из жопы Node'ами? Должен ли этот трудяга, выполняющий всю чёрную работу, этот перемазанный в угле шахтёр, заступать на смену в галстуке?

>Vec2.Vec2(x, y)
Я не знаю, не возникнет ли конфликтов, когда в области видимости есть и тип, и метод, названные одинаково, но если нет, то это позволит import static'нуть этот метод и создавать объект просто как Vec2(), без уродского new и без второго идентификатора, который нужно держать в голове. new для иммутабельных объектов — это ересь. Вдруг я захочу оптимизировать потребление памяти и ввести кэш, который будет возвращать существующий вектор вместо создания нового, или аналог того, что сделано для Integer с ‒127..127. Метод с именем Vec2.make или Vec2.of нельзя import static'нуть. Можно сделать Vec2.vec2, но тогда нужно будет, как частный случай второго идентификатора, постоянно вспоминать, почему в одном месте большие буквы, а в другом — маленькие: Vec2 myVec = vec2(1, 1.5).

>Чтобы обработать этот случай не кросс-продуктом, а просто сравнениями координат.
Но как вы распознаете этот случай без кросс-морепродуктов — иными словами, как вы собрались узнать истинность выражения o1o2 < 0 && o3o4 < 0, не имея на руках o1, o2, o3, o4? Можно воспользоваться читерскими свойствами умножений и переместить проверки на == 0 после вычисления каждого кросса:
o1 = orientation(...)
if (o1 == 0 && ...) ...
o2 = orientation(...)
if (o2 == 0 && ...) ...
Но, во-первых, чтобы воспользоваться этой «оптимизацией», придётся не только постоянно искать пересечения отрезков с 3 коллинеарными точками (часто таким занимаетесь, с повёрнутыми-то фигурками?), но ещё и учитывать порядок проверок, чтобы передавать точки, которые наиболее вероятно лежат на одной прямой, в нужных местах (не много пользы будет от шортката после вычисления o3-o4, верно?), во-вторых, это с высокой вероятностью окажется вовсе контрпродуктивным: если вы вычислили значение и тут же его используете, вы рискуете заплатить больше, чем обычно, за латентность операций, которые в ходе вычисления были задействованы. Например, если латентность умножения — 5 тактов, а его «reciprocal throughput» (число тактов, через которое процессор начнёт исполнять следующую независимую инструкцию) — 2, то если результат умножения понадобится вотпрямщас, вы рискуете прождать лишние 3 такта (или все 33, если исходные числа ожидались из памяти, или сами были результатом какого-нибудь там деления), в которые процессор мог бы исполнять следующую инструкцию — словом, начать вычислять o2, пока o1 ещё в процессе, а не ждать окончания вычисления o1, чтобы решить, шорткатиться на ту несчастную ветку или нет.

>мой внутренний голос приобретает индийский акцент, когда читаю текст
...И тут я впервые увидел вашу закоммиченную реализацию segmentsIntersect. Как у вас только язык поднимается. Снимайте штаны. ;P

>Сначала подумал, что как-то не очень выглядит, но потом передумал.
Это нужно только для выбора оси разбиения, но в оригинале у меня вектор реализован, наоборот, как
data: array[0 .. 1] of float;
property x: float read data[0] write data[0];
property y: float read data[1] write data[1];
и get(cid) является естественным способом доступа к компонентам.

Про самобалансирующиеся деревья я сказал не подумав и это может в итоге оказаться абсолютно несостоятельной идеей, как минимум неочевидно, какой порядок ввести в пространстве:

— Пусть размер блока — 1 метр строительный тетрис. Округлим координаты до метров или дециметров, сплющим этой вот нумерацией пар Кантора и упорядочим соответственно полученным числам. Но тем самым объекты будут упорядочены «кругами» (ромбами), и описанные объёмы на всех уровнях, кроме, может, парочки нижних, окажутся описанными вокруг объёма, сравнимого с объёмом всей сцены, и т. о. бесполезными.

— Пусть сцена гарантированно находится в квадрате 100м×100м и нам нужно сравнить 2 точки, A и B. Разделим сцену вертикально, на левую и правую половинки. Если точки находятся в разных половинках, то та, что в правой — больше. Иначе возьмём половинку, в которой они находятся, и разделим горизонтально, на верхнюю и нижнюю. Если точки в разных, то та, что в верхней — больше. Иначе возьмём половинку (уже четвертинку всего) и разделим вертикально... и так далее. Так результат должен быть лучше: мы вроде как лексикографически упорядочили точки по их пути в квадродереве, поэтому близкие будут обычно близко, но при этом, в отличие от ванильного квадродерева, наша иерархия делит детей не по половинкам (четвертинкам) родительского объёма, а как угодно. Но мне пока лень это проверять, и это может оказаться-таки не лучше этого самого квадродерева.

P. S.
>страшилка на ночь
>04:33:13
Аноним 27/03/20 Птн 23:16:38 355387218
ETZkvvUYAALwEM.jpeg 1181Кб, 1920x1080
1920x1080
>>355302
>Более идиоматично сделать это итератором, но они вроде как не умеют rewind
Хмм, да. Вроде как в джавумандже есть ListIterator, который умеет ходить и вперёд, и назад, но произвольного доступа да, нет. Да и вернуться назад в начало тоже нельзя сделать в одну строку.
Нет, не это, было бы тупо до подобной мелочи докапываться. Да, мне изначально было интересно, почему не список, но ты уже >Бонус ответил. По нятно, прикольно, да, мда, буду иметь это в голове.

>Node — внутренний класс, его не предполагается выдавать пользователю. Может, ещё через геттеры и сеттеры с ним работать?
Ну, нет, но просто, по-моему, это немного error-prone вручую выставлять поля вместо того, чтобы сделать конструктор. Я бы точно постоянно забывал что-нибудь так выставить, если бы так делал.
>пока возможно, не new'аем узлы, а достаём из этого списка и используем снова
Они ведь уже вторичные, ими неприятно пользоваться, надо просто убить их.

>Я не знаю, не возникнет ли конфликтов, когда в области видимости есть и тип, и метод, названные одинаково
Нетт, так можно. Я поэтому и указал это, потому что ето выглядело так, как будто ты купил велосипед, но вместо того, чтобы кататься на нём, таскаешь его сзади на верёвочке.

>Но как вы распознаете этот случай без кросс-морепродуктов
А, я, наверное, не так сказал, я не в целях оптимизации это предлагал, а, чтобы в теории была получше точность? меньше вероятность ошибки из-за floating point вычислений? надёжнее? И я буквально просто хотел заменить строку "o1 != o2 && o3 != o4" на "o1 ∗ o2 < 0 && o3 ∗ o4 < 0", чтобы, например, если o1 == 0 и o2 != 0, то проверка принадлежности точки на продолжении отрезка делалась не через кросс-продукты (o3 != o4), а просто сравнениями (o1 == 0 && onSegment(a0, a1, b0)). В кросс-продуктах, наверное, есть шанс того, что-то переполнится, ну и просто там чуть больше вычислений, а значит, больше погрешность, но я сейчас даже не знаю, имеет ли это хотя бы какой-то смысл.
>reciprocal throughput
Хм, ето интересно.

>...И тут я впервые увидел вашу закоммиченную реализацию segmentsIntersect. Как у вас только язык поднимается. Снимайте штаны. ;P
Даа, я уже понял, как это всё лучше сделать, дда.

>Разделим сцену вертикально, на левую и правую половинки. Если точки находятся в разных половинках, то та, что в правой — больше.
Хм, по нятно.

>страшилка на ночь
>04:33:13
Так вот я и не уснул.
Аноним 28/03/20 Суб 03:26:24 355429219
ETyhHyhU8AU4nkg.jpeg 57Кб, 636x900
636x900
Не знаю, почему, но, когда довожу что-либо (вне какого-либо контекста, вообще что угодно, да даже уборка в комнате, не имеет значения) хотя бы до какого-то микро-майлстоуна, то сразу же отпадает желание делать дальше какой-либо прогресс в этом направлении. Просто по ощущениям я даже не спотыкаюсь, а оседаю и растекаюсь в этом локальном минимуме. И вроде как совершенно понятно, что надо делать дальше, но нет необходимости никуда двигаться, потому что гораздо спокойнее оставаться в этой комфортной впадине, бултыхаться вот в этом родном болотце, а, если продолжить, то могут возникнуть непредвиденные трудности, да и вообще может произойти что угодно, и не факт, что ты вообще пойдёшь по правильному направлению и что не придётся потом возвращаться обратно. И, когда тебя никто насильно не толкает, то очень тяжело как-то выходить оттуда, потому что тебе просто незачем это делать: в большинстве случаев это состояние стабильно, оно не изменится со временем. И вот, что делать, пытаться убедить себя в том, что то, что есть сейчас, абсолютно неприемлемо, и надо продвинуться к чему-то другому, или убедить себя маленькими комфортными шагами выбраться из этого болота, или что вообще.

А, я вроде ещё хотел что-то написать, но я забыл, блин, ну, просто, да, блин, как-то, да. Блин.

Вот мэшап, который мне понравился, услышал его где-то случайно и удачно нагуглил
https://youtu.be/VqKOI8oTIFo

Я думал, там что-то интересное, а там какие-то слишком очевидные вещи
https://youtu.be/YIDbhVPHZbs

А вот, всё, больше ничего нет.

Как организовать своё время без дебильных табличек и ежедневников, которые у меня не хватает терпения вести, если я постоянно не укладываюсь ни в какие дедлайны. Как просыпаться утром хотя бы на час пораньше, чтобы сдвинуть режим немного назад. Как следить за тем, что ты ешь. Если я что-то нахожу дома, то я это съедаю незамедлительно, если не нахожу - то специально сам ничего не покупаю. Блин, ну вот. Чего вообще, как вообще жить надо.
Аноним 28/03/20 Суб 03:42:09 355431220
EUHCS3ZUEAE6zHR.jpeg 517Кб, 1908x1379
1908x1379
А вообще, если так подумать, я даже не знаю, чего мне вообще надо. Я просто просыпаюсь и берусь за то, что лежит рядом. А если ничего рядом не лежит, то не берусь ни за что. Или, если мне лень, то тоже ничего не делаю. Степень полезности чего-либо из-за этого тоже невозможно определить. Ну, в итоге и получается, что я какой-то пассивный кусок мусора, который ест только, если что-то по случаю окажется в области, достижимой рукой с кровати. Прошёл день - я не заметил, ничего не сделал. Ну, допустим, там доделал это >>354236, внёс какие-то мелкие изменения, в итоге удалил больше кода, чем написал, потому что определение пересечения отрезков через нахождение точки пересечения прямых их содержащих - это тупо. Да и вообще не надо было никакие отрезки пересекать, всё уже было готово для того, чтобы реализовать это. Прошёл не очень большое расстояние - на следующий день еле шевелюсь, мобильность на уровне жука, которого окунули в воду. Я и не играю даже ни во что, потому что лень, куда вообще время пропадает.
Аноним 28/03/20 Суб 19:35:08 355593221
EUL3FyzUYAAXfBG.jpeg 488Кб, 2400x4096
2400x4096
2020-03-28 19-1[...].mp4 7027Кб, 1024x800, 00:01:45
1024x800
Добавил супер-резкое падение, который вроде как хард дроп, и полупрозрачную штуку на дне, но всё так тупо сделано, что оно чего-то вылетает, если спамить хард дроп. И я ещё забыл сделать так, чтобы полпрозрачная штука не появлялась, если фигурка спавнится изначально достаточно близко к земле. И ещё, наверное, надо добавить плавную анимацию появления новых фигурок.
Рируру !!gYmpHned/k 28/03/20 Суб 20:30:56 355651222
79687055p0.jpg 276Кб, 1747x1000
1747x1000
Yuyuko !hhoO7CxTZY 28/03/20 Суб 20:55:43 355664223
>>355651
Вот тут да.
Мудро
Аноним 29/03/20 Вск 04:32:48 355749224
EUHGTXU4AEZdrt.jpeg 472Кб, 2048x1151
2048x1151
>>355651
>>355664
Чего вы вдруг, мне такое нельзя говорить. Возвращайтесь, когда я стану достойным.

Если кто-то тут не знал, как решать системы линейных уравнений,

то вы и не узнаете, потому что мои конспекты понятны только мне.
https://poppyfanboy.github.io/2020/03/29/Systems-of-Linear-Equations-1.html
Я, ну, я знал это, но я абсолютно забыл некоторые более сложные вещи, поэтому начал с простого.
Аноним 30/03/20 Пнд 02:04:46 356122225
EURvBrDUwAAvc6x.jpeg 273Кб, 1682x846
1682x846
Кстати, наконец-то побил мега сатану за лоста, но это исключительно из-за того, что мне внезапно, после кучи неудачных попыток, выпал супер-крутой сид 3YHF 2CZF, в котором на первом же этаже выпал мощный предмет на урон, на втором - четверной выстрел, на третьем - плюс девять жизней, а дальше всё было примерно в таком же духе, при этом не надо было даже стараться играть. И в конце ещё появился портал в эту, последнюю гигантскую финальную локацию. Я не помню, как она называется. Но просто забавно, по сути это идеальный сид, который только может выпасть для лоста.

Единственное - мне опять никак не хотела выпадать вторая комната с ангелом. Если честно, я так и не понял, как работают шансы на выпадение этих комнат после босс-файта, хотя я лениво играю в это прямо с первого дня выхода ремастера айзека. Я всегда думал, что в первую очередь спавнится комната дьявола, и, если она не заспавнилась, то тогда есть шанс на комнату ангела. И я не помню точно, были ли у меня подозрения на то, что я тут в чём-то не прав, но в интернете как-то я нигде не нашёл нормального объяснения того, как зависят спавны этих комнат.

Проблема с лостом в том, что ты никак не можешь понизить шансы на выпадение комнаты дьявола, потому что по сути не можешь получить урон, только умереть. И ты можешь разве что повысить шансы на комнату ангела, но, если шансы на комнату дьявола 100%, то ты по сути ничего не можешь сделать: ты оберчён на то, чтобы получить эту комнату. И ты даже не можешь ничего взять оттуда, потому что тогда ты точно не сможешь потом получить комнату ангела.

И ещё я понял, что за лоста невозможно использовать комнату для жертвоприношений, потому что если ты умираешь в ней, то ты респавнишься в предыдущей комнате. И даже, если зайти в комнату жертвоприношений, выйти, коммитнуть судоку бомбами, зареспавниться в комнате жертвоприношений и наступить на шипы, то всё равно респавнишься в соседней комнате. То есть даже, если бы я в теории наступил на шипы достаточное количество раз и заспавнил босса-ангела, то меня бы сразу после этого выбросило из комнаты и босс бы задеспавнился.

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

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

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

Кстати, забавный момент в том, что у меня не пройден ни один челлендж, так что у меня из всех рун открыта только void rune, так что если мне попадается мешочек с рунами, тоо я просто гарантированно получаю миллирад воид рун, которые, на самом деле, довольно неплохие, особенно, когда играешь за лоста, которому не нужны всякие HP-апы и айтемы на полёт (только этих айтемов довольно много). Но почему-то вот в какой-то из последних разов, в который я играл, и мне выпал мешочек с рунами, тогда мне ни одна руна не выпала, это странно.

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

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

А я даже не знаю, что хотел сказать, я растянул на кучу символов то, как я прошёл босса в айзеке и то, как мне лень играть в игры.
Аноним 31/03/20 Втр 19:40:28 356689226
EUVLExRUUAATjvP.jpeg 476Кб, 2300x3329
2300x3329
Аа, я не знаю, мне совсем не хочется ничего делать. Как-то совсем всё не очень.

У нэру новая песенка.
https://youtu.be/Dun11cIEo9s
А ещё, оказывается, у machine girl новый альбом вышел (уже несколько месяцев назад, но я примерно столько и не слушал их).
https://youtu.be/Dun11cIEo9s

https://youtu.be/zsUmFuFOG7I
https://youtu.be/ABJRtLhZy_s

Ээ, не знаю, мне просто понравилось это, хотя это какой-то стыдный контент, в том числе видеоряд.
https://youtu.be/XzfWbi9xkgs

Кстати, почти с первого прошёл в TBoI хард грид мод за лоста. Правда, конечно, не совсем честно: мне опять удачно выпали +9 жизней, а ещё красная таблетка, которой я скипнул вторую фазу финального босса. Без этого я бы даже с более крутым комбо не смог бы пройти эту вот вторую фазу, потому что вообще не понимаю, как её можно проходить без урона: у босса прожектайлы начинают взрываться, и очень часто от этих взрывов невозможно увернуться. С только одним правом на ошибку вообще не понимаю, как его побеждать.
Аноним 31/03/20 Втр 19:51:18 356701227
EUR9RcsUEAASSFh.png 114Кб, 757x769
757x769
>>356689
>А ещё, оказывается, у machine girl новый альбом вышел (уже несколько месяцев назад, но я примерно столько и не слушал их).
https://youtu.be/Ch7a0nr91y8

Да что ж такое, с каких пор ютуб стал таким мусором, почему-то через share -> copy копируется ссылка на предыдущее открытое видео. А ещё зачем-то добавили таймаут при фоновом воспроизведении видео: если долго не трогаешь вкладку, то видео стопается, и тебе надо вручную его опять запускать. А ещё зачем-то сделали так, что если добавляешь видео в плейлист, то ты автоматически переходишь в начало этого плейлиста, и дальше играется этот плейлист по порядку, хотя, блин, в этом нет никакого смысла, я, может, хочу продолжать листать рекомендованные видео. И плейлисты вообще в целом работают ужасно: иногда, если нажимаешь на какое-то видео в плейлисте, то оно открывается просто как отдельное видео, а не как видео из плейлиста, и после него запускаются рандомные рекомендованные видео.

И иногда по какой-то странной причине видео начинают добавляться в конец плейлиста, а не в начало, и тебе надо нажимать на кнопочку, чтобы снова отсортировать плейлист по порядку добавления. Я так понимаю, что это происходит тогда, когда ты случайно переставляешь два видео, и тем самым включаешь режим кастомного расположения видео в плейлисте. Но, блин, почему нельзя сделать так, чтобы новые видео по умолчанию добавлялись в начало, а не в конец?
Аноним 03/04/20 Птн 19:08:21 357703228
EUpSEyOUUAAgie3.jpeg 289Кб, 1618x1837
1618x1837
Думаю, минут через 10 сяду заниматься.
Аноним 08/04/20 Срд 22:32:46 359323229
EVAJxNqU4AAkZR4.jpeg 532Кб, 2000x2593
2000x2593
Немного почитал алгебру
https://poppyfanboy.github.io/2020/04/08/Matrices-3.html

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

У меня никогда не было интуиции относительно того, какой размерности получится произведение матриц, и вообще оно меня постоянно сбивает с толку, в частности, как-то не думал о том, что строка умноженная на матрицу - это снова строка, потому что высота результирующей матрицы берётся из первой матрицы в произведении, и, аналогично, матрица, умноженная на столбец - это снова столбец. И вот так можно расписать произведение матриц (квадратные скобки - вертикальная ориентация, круглые - горизонтальная, андерскор - строка, крышечка - столбец):
> A x B = [A_1, ..., A_n] x (B^1, ..., B^m) = [A_1 x B, ..., A_n x B] = (A x B^1, ..., A x B^m)

Кстати, как раз вот эти два представления произведения (набор строк и набор столбцов) используются в доказательстве того, что при умножении матрицы на другую ранг не увеличивается: из этого представления видно соответствие между столбцовым/строковым базисами результата произведения и соответствующими базисами матриц A и B.

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

Про обратные матрицы я тоже всё забыл. Матрица обратимо только, когда она невырожденна. Необходимость этого условия легко следует из того, что n = rank(E) = rank(AB) ≤ rank(A) ≤ n. А для достаточности надо вывести обратную для произвольной невырожденной. Для этого берётся столбцовый базис исходной матрицы, через него выражается стандартный базис (который [ 1, 0, 0, ... ], [ 0, 1, 0, ... ]) и столбцы координат составляются в матрицу, которая окажется правой обратной к исходной матрице.

Существование левой обратной матрицы можно доказать, используя только что доказанную штуку: транспонирование матрицы вырожденной её не делает, и это биекцивное отображение множества матриц самого на себя, так что, если сделать так: E = E^T = (AA')^T = (A')^T A^T, то это будет означать существование левой обратной для любой невырожденной.

А дальше, если верно AA' = E и A'' A = E, то из этого будет следовать их равенство:
> A' = E A' = (A'' A) A' = A'' (A A') = A'' E = A''

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

И ещё там была теорема о том, что умножение матрицы на невырожденную не меняет её ранга, и это доказывается через довольно странный математический при кол (B - невырожденная):
> rank(AB) ≤ rank(A) = rank(ABB^{-1}) ≤ rank(AB)
И точно так же для умножения слева. Не знаю, какой это имеет практический смысл, вот такие модные доказательства, как мне кажется, иногда скрывают то, какой вообще смысл имеют доказываемые утверждения.
Аноним 09/04/20 Чтв 20:28:47 359535230
EVE4omqVAAAxOBL.jpeg 536Кб, 1435x2048
1435x2048
Как-то странно, совсем-совсем ничего не хочется делать. Я думал сегодня хотя бы продолжить читать про многопоточность в двжаве, но так и не смог заставить себя открыть книжку. Я раньше думал, что у меня просто ужасно пугает всё новое и я максимально стараюсь избегать любых трудностей, и это действительно так, но это ведь слабо соотносится с тем, что я не могу заставить себя читать книжку по жвдажвдаве или книжку по алгебре, где относительно простые вещи, нет ничего сложного, а некотрые вещи вообще намеренно объясняются несколько раз. Так что, скорее всего, нет особого толку от того, чтобы пытаться заставлять себя что-то делать.

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

Возможно, я совершил ошибку, переместив пк со стола в кровать, не уверен, что это на что либо влияет. И, мне кажется, что так даже немного лучше posture по сравнению с тем, как я сижу за столом.

Кстати, посмотрел берсерка и академию ведьмочек, неплохие мультики.
Аноним 11/04/20 Суб 02:04:37 359928231
EU1SLYMUcAAz8GZ.jpeg 184Кб, 1253x2048
1253x2048
2020-04-11 01-4[...].mp4 7011Кб, 1024x800, 00:01:45
1024x800
С этим, на самом деле, всё.
https://github.com/PoppyFanboy/Tetris-Game/releases
У меня вроде работает и на винде, и на мда, хотя я там в одном месте впихнул платформо-зависимые слеши, но мне уже лень исправлять что-либо.

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

Начинается всё очень медленно, но оно усложняется, да и я бы не сказал, что даже так сильно просто. Цель уровня L - набрать 500L очков. 10 уровень - это уже ад, в том числе для глаз, потому что анимации начинают выглядеть как-то странно и дёрганно.

Скорее всего, надо было начислять количество очков пропорциональное текущему уровню, а ещё добавить в программу command line аргумент - начальный уровень, но уже нет. Я больше не хочу видеть это, это просто ужасно.
Аноним 13/04/20 Пнд 15:12:55 360532232
EUw72w8UwAAZm6X.jpeg 181Кб, 1341x1452
1341x1452
2020-04-13 14-3[...].mp4 262Кб, 640x480, 00:00:10
640x480
https://youtu.be/xW8skO7MFYw
https://permadi.com/1996/05/ray-casting-tutorial-table-of-contents
I want that.

На данный момент, тем не менее, ничего не сделал существенного: только вроде реа лизовал тайловую карту, в которой каждая плитка представляется интеджером, и в нём там выставляются биты, которые определяют то, что находится на плитке. И скопировал сколько-то кода из тетреса (создание окна для приложения, реакция на нажатия кнопочек, game loop, такие штуки), попытался его немного улучшить, особо не получилось, но, по крайней мере там стало немного меньше строк.

Жесть ошибкой в тетресе было переплетать вместе логику игры с тем, как она отображается на экран, здесь я постараюсь их держать как можно дальше друг от друга.
Yuyuko !hhoO7CxTZY 13/04/20 Пнд 20:46:53 360625233
>>360532
Очень мило, какую игру ты делаешь?
Аноним 15/04/20 Срд 03:12:38 360890234
EVVUeG1UwAEncpl.jpeg 79Кб, 1000x903
1000x903
2020-04-15 02-4[...].mp4 2146Кб, 640x480, 00:00:55
640x480
image.png 19Кб, 566x521
566x521
>>360625
Пока что не знаю, мне бы для начала хотя бы сам дви жок, если можно так сказать, реализовать. И я потом хочу попробовать прилепить к нему генерацию рандомных лабиринтов, чтобы было прикольно. А дальше пока что не знаю, не хочу никуда загадывать, потому что может получиться как с тетресом, что я там даже хотел там сделать какие-то всякие режимы, а в итоге бросил, наспех закончив какие-то совсем-совсем нужные вещи, потому что устал от него и не мог больше видеть.

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

Лучи продлеваются точностью до плиток, так что там довольно мало перебора получается. При этом столкновения с вертикальными и горизонтальными границами стен (если смотреть сверху, как на карте) считаются отдельно, а потом выбирается ближайшее из них. Сначала находится пересечение луча с границами клетки, в которой находится игрок, а дальше луч итеративно продлевается на 1 клетку по одной координате и на сколько-то (там через тангенс просто считается) по другой, и за каждую такую итерацию ты попадаешь в новую границу какой-то клетки. Вотт как на картинке для горизонтальных пересечений.
Аноним 15/04/20 Срд 12:36:26 360947235
Прекрати играть в майнкрафт долбаеб
Аноним 15/04/20 Срд 12:37:31 360948236
Ноешь что нет времени на саморазвитие и сидишь в майне,в майне сука
Ебал твой рот пошел нахуй
Yuyuko !hhoO7CxTZY 15/04/20 Срд 12:44:08 360950237
>>360947
>>360948
Эууу, сылш дебс, сюда подтянись, ты не знаешь и половины того что знает он, поэтому пусть играет в майн.
Аноним 15/04/20 Срд 13:50:43 360959238
>>360950
Ебалом хлопни сынок.
Игра кстати хуета зря время тратишь.
Безрукий 18/04/20 Суб 01:16:42 361544239
Если я правильно понял, то самое дело про которое ты не хочешь рассказывать не очень то тебе и нравится, раз ты не шибко хочешь им заниматься. Тогда зачем тебе им заниматься?
Аноним 18/04/20 Суб 20:24:37 361741240
EVQVCItVAAESA1V.jpeg 138Кб, 1000x982
1000x982
2020-04-18 20-1[...].mp4 2993Кб, 640x480, 00:00:25
640x480
>>360948
Не помню, чтобы я говорил что-то такое, время есть, но я в совершенстве не могу им пользоваться. Проблема только во мне.

>>361544
Уже не имеет значения. К тому же, если мне чего-то не хочется, то это не означает, что мне это не нужно. Это работает только в обратную сторону, ящитаю.


Не особо что-либо делал.

Немного почитал про многопоточность в джавве
https://poppyfanboy.github.io/java%20concurrency/2020/04/07/Java-Concurrency-2.html
https://poppyfanboy.github.io/java%20concurrency/2020/04/17/Java-Concurrency-3.html
Не знаю, что об этом говорить, потому что для меня это всё не особо имеет смысл, потому что на практике я разве что создавал отдельный поток для тетреса, и на этом всё.

Попытался добавить текстуру стены, но чего-то всё стало внезапно тормозить, хотя я выделяю вертикальную полоску из текстуры с помощью BufferedImage.getSubImage(), который
>Returns a subimage defined by a specified rectangular region. The returned BufferedImage shares the same data array as the original image.
Но я вызываю sub image при каждом рендере, так что, наверное, тормозит из-за оверхеда при создании нового объекта? А если сохранить все полоски текстуры заранее, то вроде как не тормозит даже на большом разрешении (видеорелейтед с предзагруженными полосками).

Ещё на предыдущем видео у меня было всё немного сломанным, потому что я рандомно расставил коэффициенты, с которыми всё отображалось на экран. А теперь здесь есть picture plane (который равен размеру экрана), на который проецируются стены. Расстояние до PP вычисляется через его размер и угол обзора, и дальше при известной настоящей высоте стен можно вычислить высоту проекции. Теперь в теории всё выглядит так, как будто всё состоит из кубических блоков, а камера на ходится на высоте половины высоты блока.

Yuyuko !hhoO7CxTZY 18/04/20 Суб 21:43:22 361762241
>>361741
Выглядит красиво
Аноним 19/04/20 Вск 23:18:07 362176242
EVF2e9U0AAVUQD.jpeg 617Кб, 2367x3168
2367x3168
2020-04-19 23-1[...].mp4 3835Кб, 640x480, 00:00:47
640x480
>>361762
спасибо


минус фреймрейт
Yuyuko !hhoO7CxTZY 19/04/20 Вск 23:59:27 362181243
>>362176
Странно, вроде бы ничего особо не появилось, что могло повлиять на фпс
Аноним 20/04/20 Пнд 00:10:49 362190244
EVfYaAHUYAE4Hpt.jpeg 356Кб, 2300x1406
2300x1406
2020-04-20 00-0[...].mp4 2344Кб, 640x480, 00:00:17
640x480
>>362181
Появился пол, отрисовывающийся попиксельно, а не как стены - полосками. Через глаз наблюдателя и точку на экране проводится линия, для которой находится пересечение с полом. И дальше по точке пересечения определяется нужный пиксель на текстуре.

Плюс ещё я там зачем-то каждый отдельный пиксель пола затемнял, хотя в этом нет особого смысла: можно поверх пола наложить такой полупрозрачный градиент. На видеорелейтед так сделал и всё значительно быстрее стало работать, но всё ещё тормозит относительно версии без пола.
Yuyuko !hhoO7CxTZY 20/04/20 Пнд 00:21:38 362197245
>>362190
Хм, казалось это просто текстура поверх плейнов
Yuyuko !hhoO7CxTZY 20/04/20 Пнд 00:23:15 362199246
>>362190
> Через глаз наблюдателя и точку на экране проводится линия, для которой находится пересечение с полом. И дальше по точке пересечения определяется нужный пиксель на текстуре.

Рей кастинг
Yuyuko !hhoO7CxTZY 20/04/20 Пнд 00:23:43 362200247
Или не совсем то, о чем думаю
Аноним 20/04/20 Пнд 00:25:54 362201248
ETp7t-bUcAAcqLP.jpeg 53Кб, 561x652
561x652
>>362200
Нет, всё правильно, ето рейкастинг.
Yuyuko