Расшифровка видео
0:00
Всем привет Сегодня я расскажу о том как
0:02
я делал свою первую игру идея этой игры
0:04
появилась очень много лет назад и я
0:06
много раз начинал её делать И каждый раз
0:08
забрасывали на полпути как И множество
0:11
других проектов игру я решил делать в
0:13
вебе То есть это просто сайт даже без
0:15
какого-либо игрового движка на который
0:17
можно зайти и сразу же играть в эту игру
0:19
примерно как agario или слизарио я думаю
0:22
многие помнят такие игры и это тот самый
0:24
случай когда изначально я делал её
0:27
только для себя и не думал что кому-то
0:28
ещё она будет интересно но потом я
0:31
упомянул эту игру в своём видео и
0:33
внезапно оказалось что она всем
0:35
понадобилась очень многие стали
0:37
спрашивать когда она выйдет Хотя
0:39
изначально я даже не планировал её
0:40
выпускать эта игра довольно необычная Я
0:43
бы назвал её игрой для программистов
0:45
ведь там можно делать процессоры
0:47
калькуляторы и разные необычные
0:48
конструкции но Давайте расскажу историю
0:51
создания этой игры по порядку а началось
0:53
всё больше 10 лет назад 13 марта 2013
0:57
года в Майнкрафте вышел Редстоун апдейт
1:00
в нём добавили блоки редстоуна хопперы и
1:03
многое другое для меня это было самое
1:05
крутое обновление и я Днями и ночами
1:07
экспериментировал с разными редстоун
1:09
схемами и мне кажется у меня большинство
1:12
зрителей играли в Minecraft но Давайте
1:14
на всякий случай поясню О чём идёт речь
1:16
в Майнкрафте есть материал который
1:18
называется Стоун из него делается что-то
1:21
вроде проводов по которым можно
1:22
передавать сигналы также из него можно
1:25
собирать конструкции похожие на базовые
1:27
логические элементы из которых строится
1:29
любой процессор например компьютера или
1:31
телефона были игроки которые делали из
1:34
редстоуна калькуляторы дисплеи и даже
1:36
целые компьютеры А некоторые Redstone
1:39
схемы ещё и выкладывали вот в таком вот
1:41
виде вдохновившись этим я решил сделать
1:43
похожий симулятор схем для себя чтобы в
1:46
него я мог добавлять новые логические
1:48
элементы и сразу с ними
1:49
экспериментировать и первая версия моей
1:52
игры выглядела вот так у меня остался
1:55
только этот скриншот и тут можно
1:57
заметить что во-первых в ней изначально
1:58
была Тёмная тема а во-вторых смотрите
2:01
Какая дата это было больше 10 лет назад
2:04
писал я их тогда на джаваскрипт и там
2:06
был только один этот экран его нельзя
2:08
было даже подвинуть то есть всё строить
2:10
можно было только на нём рисовал Я на
2:12
HTML теге вас Это что-то вроде холста на
2:15
которым можно рисовать 2D графику при
2:18
этом все стрелочки я решил рисовать
2:20
линиями и начал я с базовой стрелочки
2:23
тёмно-красного цвета потому что это цвет
2:25
редстоуна изначально я хотел сделать
2:27
стрелочку вот такой но случайно не
2:30
закрыл линию и поэтому она получилась
2:32
Вот такая и мне было лень это исправлять
2:35
и я думал что когда-нибудь потом это
2:37
исправлю но потом я решил
2:38
поэкспериментировать и поставить
2:40
побольше толщину линий в результате чего
2:43
получилась Вот такая Стрелка которая в
2:45
похожем виде осталось и до сих пор Я
2:47
долго хотел сделать и выпустить эту игру
2:50
выбирал язык и метод реализации А если у
2:53
вас тоже есть идеи но вы ещё не знаете с
2:55
чего начать и как воплотить их в жизнь
2:57
то могу порекомендовать вам начать с
2:59
изучения Python это универсальный и
3:01
понятный язык программирования который
3:03
подходит для изучения с нуля а выучить
3:05
его вам поможет онлайн Школа Skill
3:07
Factory на курсе вы освоите профессию
3:09
СТК разработчика на Python и сможете в
3:12
одиночку создавать проекты такие как
3:14
сайты веб-приложения ботов игры и так
3:16
далее люди с такими навыками нужны и в
3:18
крупных компаниях и в стартапах а их
3:21
зарплаты в России в среднем 180.000 руб
3:24
во время обучения вы сделаете 10 своих
3:26
проектов пройдёте стажировку и
3:28
поучаствую в катоне где с наставниками
3:31
решите проблему бизнеса на одном из
3:33
таких недавно студенты разработали
3:35
Telegram Бота для Московского зоопарка а
3:37
тех кто хорошо показал себя пригласили
3:40
продолжить работу над проектами Так что
3:42
по окончанию курса у вас будет готовое
3:44
портфолио и достаточно опыта чтобы без
3:46
проблем найти работу переходите по
3:48
ссылке в описании или по QR коду на
3:51
экране А по промокоду онигири вас ждёт
3:53
дополнительная скидка Ну а давайте
3:56
вернёмся к стрелочкам вот сделал Я самую
3:58
первую базовую стрелочку которая просто
4:00
передаёт сигнал вперёд и сразу же нашёл
4:02
с ней одну проблему Давайте покажу это
4:04
на примере новых стрелочек допустим у
4:06
нас есть два сигнала на двух разных Вот
4:09
таких вот линиях из стрелочек если я
4:11
попробую соединить их в одну линию то
4:13
эти сигналы пойдут с некоторым
4:15
промежутком А хотелось бы превратить их
4:17
просто в один длинный сигнал и как бы я
4:20
не совмещал эти линии стрелочек они
4:22
никогда не совмест в один длинный сигнал
4:25
поэтому нужна была стрелочка которая
4:27
задержит сигнал на один такт и потом у
4:29
отправит на эту линию тогда они будут
4:31
уже одним большим сигналом таким образом
4:34
появилась Стрелка задержки которая
4:36
сначала включается одним сигналом
4:37
который ничего не делает А уже потом
4:39
загорается красным и передаёт сигнал
4:41
дальше в то время в Майнкрафте игроки
4:43
обсуждали что в игру возможно добавят
4:45
некоторую альтернативу редстоуна то есть
4:48
редстоун который бы работал так же но
4:50
при этом не взаимодействовал бы с
4:52
обычным редстоуном многие называли это
4:54
Блю стоу нам даже были моды которые
4:56
добавляли этот самый блю Стоун и точно
4:59
также в стрелочка я решил Второй сигнал
5:01
сделать синим А ещё в начале у меня была
5:04
такая идея что если два сигнала приходят
5:06
на стрелочку одновременно то она
5:08
загорается более мощным сигналом и так
5:11
как изначальный сигнал у нас красный то
5:13
более яркий пусть будет жёлтый Но что
5:15
дальше делать с этим более мощным
5:17
сигналом Можно конечно его так и
5:19
передавать дальше жёлтым но лучше
5:21
добавить какие-то инструменты которые бы
5:23
позволили понять какой сейчас в
5:25
стрелочке сигнал красный или жёлтый
5:27
поэтому я сделал вот такие вот стрелочки
5:29
детекторы на каждый цвет они загораются
5:32
если сзади них клетка активна
5:34
соответствующим цветом но потом мне
5:36
показалось это не очень удобным и я
5:38
решил оставить просто один детектор
5:40
который детектив любой сигнал и
5:42
использовать его для раздваивается
5:49
операцию логического и то есть
5:51
включается когда на неё приходят два
5:53
сигнала но так как в моём случае на неё
5:56
может прийти и больше двух сигналов то и
5:58
тогда она будет тоже включа но тут есть
6:00
ещё одна проблема смотрите допустим у
6:02
нас есть две линии из стрелочек и нам
6:04
нужно из них создать некоторый
6:06
перекрёсток то есть чтобы левая линия
6:08
пошла направо а правая налево И для
6:11
этого я думал сначала сделать отдельную
6:12
стрелочку которая отправляла бы сигнал
6:14
либо в одну сторону либо в другую но
6:17
потом подумал что будет гораздо удобнее
6:19
Если была бы стрелочка которая как бы
6:21
отправляет Сигнал через одну клетку
6:23
таким образом и не Придётся делать
6:25
стрелочку с какой-то особенно сложной
6:27
логикой и Перекрёстки будут выглядеть
6:29
очень наглядно К тому же такой стрелочке
6:31
можно придумать ещё много других
6:33
применений Кстати вы могли заметить что
6:36
стрелочки очень похожи на клеточный
6:38
автомат в общем-то они им и являются
6:41
клеточный автомат – это когда у нас есть
6:43
поле из клеточек и они меняются по
6:45
определённым правилам самым известным
6:47
клеточным автоматом является игра жизнь
6:50
которая В
6:51
1970 году была придумана британским
6:53
математиком Джоном конви У неё очень
6:56
простые правила если клетка не заполнена
6:59
или Её называют мёртвой клеткой и вокруг
7:01
неё есть три заполненных То есть живых
7:03
клетки то эта клетка тоже становится
7:05
живой А если клетка уже живая и вокруг
7:07
неё ровно две или три живых клетки то
7:10
она остаётся живой во всех остальных
7:12
случаях клетка становится мёртвой и
7:14
внезапно эти очень простые правила
7:16
порождают очень сложное поведение
7:18
клеточного автомата Например если
7:20
создать такую вот структуру из клеточек
7:22
Её называют глайдер и запустить её то
7:25
она начнёт как бы шагать по диагонали А
7:27
вот такая структура генерирует глайдеры
7:30
есть ещё более сложные заводы разных
7:32
космических кораблей в игре жизнь даже
7:34
делали компьютеры и даже делали игру
7:37
жизнь внутри этой же игры у меня кстати
7:40
уже было видео про клеточные автоматы
7:42
можете посмотреть там всё это более
7:43
подробно в клеточных автоматах
7:45
используется такое понятие Как скорость
7:47
света скорость света Так же как и в
7:49
физике – это максимальная скорость
7:50
движения а Если точнее то максимальная
7:53
скорость передачи информации и
7:55
классическая скорость света в клеточных
7:56
автоматах – это единица То есть за один
7:59
шаг выполнения клеточного автомата он
8:01
может передать информацию на одну клетку
8:03
но бывают и такие клеточные автоматы в
8:05
которых скорость света не равна единицы
8:08
это происходит когда на клетку влияют не
8:10
только клетки которые вплотную к ней
8:11
прилегают но и клетки которые находятся
8:13
как бы на расстоянии от неё также и в
8:16
стрелочка здесь скорость света равна
8:18
двум Потому что есть вот эта вот
8:19
стрелочка и Она передаёт сигнал с
8:21
большей скоростью кстати стрелочки
8:23
являются чем-то средним между клеточным
8:26
автоматом и редстоуном из Майнкрафта в
8:28
Майнкрафте некоторые части Redstone
8:30
схемы могут активироваться моментально
8:32
даже если они состоят из нескольких
8:34
элементов А в стрелочка всё активируется
8:36
ровно по шагам Наверное это самое
8:38
основное отличие стрелочек от Майнкрафта
8:41
и с одной стороны из-за этого сигнал в
8:43
стрелочка идёт немножко дольше чем в
8:45
редстоун Но с другой стороны как мне
8:47
кажется это выглядит гораздо нагляднее и
8:49
явно показывает работу каждой отдельной
8:52
стрелочки А ещё может быть не все об
8:54
этом знают но в Майнкрафте существует
8:56
так называемое юго-восточное правило
8:58
объект повёрнутые в определённые стороны
9:01
имеют приоритет из-за чего одни и те же
9:03
но повёрнутые в разные стороны
9:05
конструкции могут работать по-разному
9:07
вот у нас например есть два поршня
9:09
впереди находится Запад а слева
9:11
находится юг включаем их и активируется
9:14
Южный поршень А если Западный и Северный
9:16
активируется Северный Северный и
9:18
Восточный активируется северный южный и
9:20
Восточный активируется Южный А между
9:22
западным и восточным активируется
9:24
Западный между северным и южным
9:26
активируется Северный то есть игра
9:29
работает не симметрично такая же
9:31
проблема сначала была и у меня я добавил
9:33
стрелочку которая может блокировать
9:35
сигнал в другой стрелочки И если
9:38
поставить две такие стрелочки друг
9:39
напротив друга то победит та которая
9:41
находится правее или ниже потому что
9:44
программа проходит по всей таблице из
9:46
клеточек слева направо сверху вниз и
9:49
стрелочка которая находится правее или
9:51
ниже обработает последний А значит её
9:54
действие как бы перезаписи стрелочки
9:57
которая находилась левее или выше можно
9:59
было бы конечно и не обращать на такую
10:01
ситуацию внимание Но она выглядит не
10:02
симметрично Это примерно как плитка
10:04
которая неровно уложена К тому же
10:06
например в игре жизнь такой проблемы нет
10:09
там всё работает абсолютно симметрично
10:11
хотя там программа тоже может проходить
10:13
по таблице из клеточек слева направо
10:15
сверху вниз но там есть не одна таблица
10:17
а две таблицы предыдущее состояние поля
10:20
и новое состояние поля и мы высчитывали
10:22
новое состояние из предыдущего таким
10:25
образом текущее состояние не меняет само
10:27
себя и хоть в Майнкрафте проблема с
10:29
поршнями более сложная и её так просто
10:31
не решить Но для моего случая это
10:33
идеально подходит И вот теперь уже если
10:36
сделать правило симметричными то
10:37
стрелочки будут одновременно включаться
10:39
потом одновременно друг друга выключать
10:41
и опять включаться и так по кругу в то
10:44
время я экспериментировал только с
10:45
самыми первыми стрелочками которые я
10:47
тогда придумал и вот конструкции которые
10:50
для меня стали уже классическими
10:52
во-первых это назовём его удлинитель
10:54
сигнала Например если на него придёт
10:56
сигнал в одну клетку то на выходе будет
10:59
сигнал в две клетки А если придёт сигнал
11:01
длиной два то на выходе будет сигнал
11:03
длиной три То есть он всегда удлиняет
11:05
сигнал на один а если здесь стрелочку
11:08
заменить на стрелочку которая будет
11:09
блокировать сигнал то у нас получится
11:11
конструкция которая сигнал любой длины
11:13
превращает в сигнал длины один А ещё я
11:16
заметил хоть и далеко не сразу что нам
11:18
даже не нужен детектор среди базовых
11:20
стрелочек чтобы раздвоить сигнал потому
11:23
что можно блокировать сигнал в источнике
11:25
и таким образом им управлять и с помощью
11:27
него раздваивается сигнал забавно что я
11:30
сам сделал такие правила и далеко не
11:32
сразу нашёл как их можно использовать
11:34
таким образом А тем временем наступил
11:37
2014 год Apple выпустил язык Swift я
11:40
решил его протестировать И сделать на
11:42
нём новую версию стрелочек Я думал что
11:45
возможно стрелочки можно сделать игрой
11:47
на iPhone как раз там я сделал поле
11:49
белым Точнее я их тогда просто заскринил
11:51
из той javas тово версии чуть подправил
11:54
в Фотошопе и получились готовые спрайты
11:56
но ту идею с игрой под IOS я да довольно
11:59
быстро забросил но не забросил стрелочки
12:02
на этот раз я решил переписать их на
12:03
язык CSP Да я тогда изучал просто много
12:06
разных языков и смотрел какие мне
12:07
понравятся и попутно пытался написать на
12:10
этих языках какие-нибудь игры так вот я
12:12
выбрал язык CSP и игровую библиотеку xna
12:15
на которой написано например Terraria и
12:17
уже вот эта версия стрелочек была
12:19
довольно проработанной там можно было
12:21
сохранять загружать карты там даже были
12:23
некоторые уровни и очень много видов
12:26
стрелочек большинство из которых ещё не
12:28
дошли до но версии который я недавно
12:30
опубликовал А ещё я тогда обнаружил что
12:32
стрелочки Оказывается уже были сделаны в
12:34
пятидесятых годах XX века и Смотрите тут
12:37
даже описана проблема о которой я
12:39
недавно рассказывал что иногда нужно как
12:41
бы задержать сигнал чтобы он пришёл в
12:43
нужное время А придуманные они были
12:45
математиком Джоном фон нейманом в честь
12:47
него например названа фон неймановская
12:49
архитектура на которой основаны все
12:51
современные компьютеры А эти его
12:53
стрелочки – Это самый первый клеточный
12:55
автомат который получил известность но
12:57
правила у него очень сложные и только
13:00
уже через 20 лет Джон конвей придумает
13:02
свою игру Жизнь с очень простыми
13:04
правилами Но таким же сложным поведением
13:07
А тем временем в стрелочка у меня была
13:09
ещё одна проблема они не очень быстро
13:11
работали в той версии которую я писал на
13:13
си шарпе была стандартная карта 100 на
13:15
100 клеток и она могла работать в 60 FPS
13:18
но хотелось и карту сделать больше и
13:20
чтобы симуляция работала гораздо быстрее
13:23
а Всё дело в том что при вычислении вот
13:25
этих вот двух массивов которые нужны для
13:27
старого и нового состояния я один из них
13:29
каждый раз удалял и
13:31
пересоздание неэффективно и каждый раз
13:34
триггерит сборщик мусора что как раз и
13:36
создаёт очень большую нагрузку на
13:38
систему из-за чего всё это и медленно
13:40
работает но тогда я ещё об этом как-то
13:42
не знал и подумал что всю проблему можно
13:44
просто решить переписав это на
13:45
какой-нибудь более быстрый язык например
13:47
на c+ Plus но делать мне это тогда было
13:50
лень поэтому я отложил эту идею на
13:52
несколько лет И вот я уже начал этот
13:54
канал и подумал что будет прикольно если
13:57
я всё-таки выпущу эти самые стрелочки И
13:59
решил начать писать их на c+ Plus
14:02
изначально я выбрал библиотеку sdl но с
14:04
ней всё шло как-то медленно поэтому Я
14:06
перешёл на более высокоуровневый и более
14:08
простой sfml и какая-то начальная версия
14:11
стрелочек У меня даже получилась И я
14:13
решил показать её в своём видео в 2020
14:16
году где рассказывал о том какие игры Я
14:18
раньше делал и хоть о стрелочка я
14:20
рассказывал не очень долго и это было
14:23
ближе к концу видео но внезапно это
14:25
стало самым просматриваемый моментом
14:27
видео а больше часть комментариев под
14:29
видео было про эти самые стрелочки но на
14:32
c+ Plus я писал стрелочки очень медленно
14:35
поэтому далеко они всё-таки не
14:36
продвинулись а затем я увидел одну очень
14:39
похожую на стрелочки игру shapes IO Да
14:42
она скорее больше похожа на крио чем на
14:44
стрелочки но по графике она похожа на
14:46
стрелочки при этом у неё была браузерная
14:49
версия а была версия для Стима И тут я
14:52
подумал а что если стрелочки всё-таки
14:54
сделать браузерные ведь в shapes можно
14:56
понастроили
14:58
ци и всё это работает быстро а стрелочки
15:01
я не делал для браузера именно по
15:03
причине производительности К тому же
15:05
когда я делаю любую игру Я всегда
15:08
застревают Когда нужно делать интерфейс
15:11
интерфейс часто бывает сделать сложнее
15:13
чем саму игру А если делать игру для
15:15
браузера то эта проблема упрощается
15:18
потому что на HTML можно довольно легко
15:20
написать нужный интерфейс К тому же если
15:22
делать игру на
15:24
компилирует переносить на разные
15:26
устройства и с этим могут возникнуть
15:29
и я думал что в браузере таких проблем
15:31
не будет ведь он везде работает
15:32
одинаково и вот я собрался делать
15:35
стрелочки уже в шестой раз и может быть
15:38
я бы их так и не сделал если бы вы
15:40
постоянно не писали бы мне и не
15:41
напоминали где стрелочки И вот спустя 2
15:44
с по года после того видео где я
15:47
упоминал стрелочки 17 декабря 2022 года
15:51
я начал делать стрелочки Ну и конечно же
15:53
мне нужно было сразу задумываться о том
15:55
как я буду запускать Этот проект Когда
15:58
наконец его доделаю ведь нужно чтобы он
16:00
работал 24 на 7 вне зависимости от
16:03
работы моего компьютера поэтому я
16:05
разместил его на выделенном сервере
16:07
selectel в предыдущих видео Я уже
16:09
использовал облачные серверы selectel в
16:11
том числе и с видеокартами для машинного
16:13
обучения Но для сервера моей игры
16:16
видеокарта не нужна поэтому я выбрал
16:18
обычный сервер хоть и довольно мощный
16:20
чтобы он точно выдержал наплыв
16:22
пользователей в первые дни к счастью в
16:24
selectel можно подобрать идеальное
16:26
решение по мощности и бюджету и вы
16:28
выбрать сервер с готовой конфигурацией
16:30
или собрать кастомный под себя а сервер
16:32
Я выбрал просто из готовых конфигураций
16:35
они все уже собраны настроены и готовы к
16:37
работе её можно просто выбрать и сервер
16:39
будет готов уже через 2 минуты Кстати
16:42
этот сервер можно арендовать даже на
16:44
один день сервер у меня будет быстрый Но
16:46
вот что делать с клиентской частью ведь
16:48
браузерные игры никогда не отличались
16:50
своей производительностью А я хотел
16:53
чтобы стрелочки работали очень быстро
16:54
Несмотря на то что они работают в
16:56
браузере и Поэтому решил использовать
16:58
webgl то есть использовать графическое
17:00
IP такое как Direct X или opl как делают
17:03
в настоящих играх только в браузере в
17:05
браузере это webgl И вот благодаря webgl
17:08
теперь можно на экране рисовать большое
17:10
количество стрелочек и далеко отдалять
17:13
камеру А ещё благодаря ему появляется
17:15
огромный простор для оптимизаций и для
17:18
багов тоже Например иногда стрелочки
17:20
начинали выглядеть вот
17:26
так а ещ
17:29
есть вторая версия которая 2 года назад
17:30
стала поддерживаться на современных
17:32
телефонах но на релизе стрелочек
17:34
оказалось что у некоторых компьютером
17:36
лет 15 и они не поддерживают второй
17:38
webgl и Я использовал тот самый второй
17:40
webgl который у многих не поддерживался
17:43
И тут я подумал а я ведь не использую
17:45
многие его функции то есть я могу просто
17:47
поменять несколько строчек и заменить
17:49
его на первый и действительно проблема
17:51
решилась Кстати если вдруг кому
17:52
интересно сначала вот был canvas 2D в
17:54
который обычно все рисовали потом Web
17:56
jil первый потом Web jil второй а дальше
17:58
будет webgpu И вот я подумал что если
18:01
выходит webgpu может быть стрелочки
18:03
сразу писать на нём тем временем у
18:05
многих выключено вообще видеокарта в
18:07
браузере а потом они такие А почему всё
18:09
так медленно работает но это я забегаю
18:11
сильно вперёд Давайте вернёмся к тому
18:13
моменту когда я делал эти стрелочки раз
18:15
это будет сайт то ему нужен адрес и
18:17
немножко посоветовавшись с gpt Я решил
18:20
выбрать Logic arrow.io точка IO также
18:23
как agario или slizario или многие
18:25
другие подобные игры А название игры
18:27
будет Logic arrows по аналогии с Logic
18:30
Gates типологические элементы из которых
18:32
состоит например Компьютер при этом тут
18:34
в адресе есть ещё вот такая вот чёрточка
18:37
её можно использовать в адресах сайтов
18:39
но при этом я не помню чтобы её
18:40
когда-нибудь кто-нибудь использовал и я
18:42
Погугли А стоит ли использовать эту
18:44
чёрточку и все говорят что нет И
18:46
основная причина потому что никто другой
18:48
её не использует из-за этого адрес сайта
18:51
может быть сложнее вспомнить Но по-моему
18:52
это даже лучше если никто не использует
18:55
эту чёрточку то сайт наоборот будет
18:57
выделяться этой ч
18:58
В общем так я и решил её написать кстати
19:01
неочевидный минус названия Logic erus он
19:04
начинается нало также как и Local Host
19:07
Поэтому иногда я хочу зайти на Local
19:08
Host набираю L А у меня высвечивается
19:11
Logic arrows А ещё Несмотря на то что я
19:13
давно программирую и фнн и Энд Я никогда
19:16
не создавал свои собственные сайты
19:18
поэтому я не знал вдруг я запущу этот
19:20
сайт и сразу же что-нибудь сломается и
19:22
сначала я решил сделать другой сайт
19:24
немного попроще и им был сайт с опросом
19:27
который я показы своих предыдущих видео
19:30
а также постил в своём Telegram канале
19:31
кстати подписывайтесь на него и на
19:33
удивление первые пару недель этот сайт
19:35
просуществовал нормально но потом как
19:37
только его не до доси как только его не
19:39
взламывали поэтому хорошо что я решил
19:41
сделать более простой сайт перед тем как
19:43
выпускать стрелочки А ещё я думал на чём
19:46
писать сервер стрелочек Раньше я много
19:48
программировал на Джаве и это был самый
19:50
привычный для меня язык но писать энд на
19:53
Джаве в 2023 году уже как-то не модно
19:55
поэтому я посмотрел разные варианты и вы
19:58
бл node JS да Раньше я бы подумал что
20:00
писать backend на жава скрипте – это
20:03
очень странная идея И зачем вообще этот
20:04
noe JS нужен но на самом деле он
20:07
настолько удобный что уже после одного
20:08
дня написания сервера Я не хочу
20:10
возвращаться назад на jav Раньше я думал
20:13
что node JS будет очень медленно
20:15
работать Но работает он на удивление
20:17
быстро только он тратит очень много
20:19
памяти но я пришёл с джавы Так что мне
20:21
не привыкать раньше когда я ещё пытался
20:24
написать эту игру на c+ Plus Я думал в
20:26
дополнение к игре сделать ещё и куда
20:28
игроки смогли бы выкладывать свои карты
20:30
но так как теперь игра – это и есть сайт
20:33
то карты хранить можно прямо в ней и вот
20:35
я доделал стрелочки И теперь их нужно
20:37
загрузить на сервер прямо на сайте в
20:39
панели управления My selectel.ru есть
20:42
консоль через которую можно сразу же
20:43
взаимодействовать с сервером Ну ещё я
20:46
сгенерировал ssh ключ с помощью которого
20:48
я теперь удобно могу подключаться к
20:50
серверу из терминала в том числе даже из
20:52
Visual Studio код в котором я весь код и
20:54
пишу в описании кстати будет ссылка на
20:57
sel Тесь там и заказывайте серверы для
21:00
проектов любой мощности А если теперь я
21:02
храню карты на сайте то нужна система
21:05
пользователей А значит нужна регистрация
21:08
аутентификация и всё такое для создания
21:11
аккаунтов У них наверное Должны быть
21:13
пароли а хранить пароли оказывается не
21:15
так уж и просто особенно когда видишь
21:17
что у многих даже крупных сайтов утекают
21:19
базы с открытыми паролями Ну то есть
21:21
если база куда-то
21:24
утечку а у многих они повторяются на
21:27
разных сайтах или в разных приложениях
21:29
поэтому пароли необходимо хранить в
21:31
зашифрованном виде то есть хранить нужно
21:33
даже не совсем в зашифрованном нужно
21:35
хранить хэш пароля то есть что-то вроде
21:37
случайного числа которое получается из
21:39
пароля Ну как Например мир в Майнкрафте
21:41
получается из Сида и таким образом если
21:48
утечка раз когда пользователь вводит
21:50
пароль он преобразуется в хэш и
21:52
сравнивается с хшм таким образом пароль
21:54
нигде не хранится теоретически конечно
21:56
пароли всё равно можно восстановить есть
21:58
дополнительные методы защиты А я решил
22:00
вообще отказаться от хранения паролей
22:03
это и безопаснее и проще и сделать
22:05
просто аутентификацию через Google Ну то
22:08
есть использовать с ним вот этот вот ауф
22:10
2.0 но Google требует чтобы у сайта было
22:13
лицензионное соглашение и раньше это
22:16
было бы проблемой но теперь у нас есть
22:18
чат gpt да Он помог мне написать
22:21
лицензионные соглашени и теперь можно на
22:23
сайт заходить через Google потом я
22:26
попросил нейросеть сделать лицензионный
22:28
соглашение чуть покрасивее и оно стало
22:30
выглядеть Вот так я кстати попросил эти
22:32
стили сделать не gpt а Клод и внезапно
22:35
Клод сделал лучше чем gpt Хотя обычно
22:37
мне gpt больше нравится но иногда вот
22:39
бывает и так Когда я первый раз скинул
22:41
прототип стрелочек другому человеку Я
22:44
думал что у него будут какие-нибудь баги
22:46
которых не было у меня но оказалось что
22:48
он даже не смог залогиниться потому что
22:50
я использовал Google Chrome А он
22:52
использовал Firefox и фаерфоксе
22:56
Кукин решил шил их просто не сохранять
22:59
поэтому я поставил настройки чтобы ки не
23:01
были доступны другим сайтам чтобы они
23:03
хранились в зашифрованном виде и чтобы
23:05
они не были доступны из джаваскрипт Но
23:07
зачем вообще нужны эти кукии кусочки
23:10
данных обычно ограниченные тыя кило
23:12
байтами которые хранятся в браузере и у
23:14
них есть одна удобная особенность Каждый
23:17
раз когда мы Обращаемся к серверу мы
23:19
можем автоматически отправлять
23:26
кукисвумчорр токен то пользователь может
23:29
каждый раз отправлять его на сайт и
23:31
подтверждать что это он и вот после всех
23:34
этих настроек ки Они наконец-то
23:36
нормально заработали из фаерфоксе
23:39
а точнее к вот такому блоку который
23:41
выдаёт сигнал один раз в самом начале и
23:43
потом больше его не выдаёт я решил
23:45
сделать его отдельным элементом Хотя его
23:47
вообще можно было составить из
23:49
нескольких стрелочек например вот таким
23:51
вот образом может быть эту конструкцию
23:53
можно ещё упростить но она довольно
23:55
часто нужна Поэтому я решил сделать её
23:57
отдельным блоком наверное самый простой
23:59
пример – это когда нам нужно чтобы
24:00
конструкция выдавала сигнал раз в
24:02
какое-то время мы можем использовать
24:03
этот блок который создаст Этот один
24:06
сигнал который потом будет ходить по
24:07
кругу так вот тот самый человек которому
24:09
я первым отправил стрелочки повернул
24:12
этот блок А этот блок ведь работает во
24:14
все стороны симметрично То есть он
24:16
полностью симметричный и я не думал
24:18
Никогда о том чтобы его повернуть
24:20
поэтому для меня этот повёрнутый блок
24:22
выглядел примерно как вот такой вот
24:24
сундук в Майнкрафте А если вы следили за
24:26
моим телеграмом или бусти то возможно
24:28
знаете что стрелочки Я выпустил чуть
24:30
больше недели назад и за это время в
24:32
стрелочка сделали очень много крутых
24:35
конструкций например вот это калькулятор
24:37
и интересно в нём то что в нём необычный
24:39
экран цифры на нём появляются не за счёт
24:42
того что стрелочки активируются а
24:44
наоборот цифры состоят из выключенных
24:46
стрелочек А вот это дисплей который
24:49
может выводить любые картинки изначально
24:52
Я вообще думал что такое будет
24:53
невозможно потому что чем больше
24:55
пикселей тем больше проводов к ним нужно
24:57
вести а тут абсолютно все сигналы
24:59
проходят по всего лишь одному
25:01
Единственному проводу В будущем я
25:03
планирую каждого игрока сделать страницу
25:05
где будут отображаться его карты Ну а
25:08
пока этого нет Аркадий чубрик сделал
25:10
страницу на гитхабе куда выкладывает
25:12
свои самые эпичные карты и он сделал
25:14
даже то что я сам пытался построить в
25:16
стрелочка но у меня пока ещё не
25:20
[музыка]
25:26
получилось
25:28
[музыка]
25:36
Да это игра Жизнь в стрелочка но так как
25:39
О стрелочка я рассказал довольно давно а
25:41
выпустил я их Лишь недавно то некоторые
25:43
не стали дожидаться и решили сделать
25:45
свои версии стрелочек вот эти мне
25:48
наверное показались самыми проработанные
25:50
возможно кстати благодаря эффекту
25:52
свечения они выглядят гораздо лучше и
25:54
Вот пример сумматора в них который
25:56
складывает два двоичных числа а вот я
25:58
попробовал сделать свой сумматор А эти
26:00
стрелочки делали админы моего Telegram
26:03
канала в них большая кастомизация можно
26:05
многое настраивать есть даже скины на
26:07
стрелочке Я кстати много раз менял
26:09
дизайн своих стрелочек например
26:11
изначально очень многие стрелочки у меня
26:14
выглядели одинаково потом я решил им
26:16
добавить небольшие различия чтобы они
26:18
были не просто разного цвета А ещё у
26:20
меня некоторые стрелочки вообще ни в
26:22
какую сторону не выдавали сигнал Ну
26:24
потому что я почему-то вот так вот решил
26:25
сделать например вот это вот ячейка
26:28
памяти она переключала своё состояние
26:30
любым входящим сигналом но сама никуда
26:33
этот сигнал не выдавала поэтому его надо
26:35
было как бы достать детектором но потом
26:38
я приделал ей вот такую вот крышечку и
26:40
теперь она стала передавать сигнал
26:42
вперёд и забавно что совсем недавно чуть
26:44
ли не Перед выходом этого видео в
26:45
Майнкрафте выходит апдейт где добавляют
26:48
Вот эту вот штуку то есть ячейку памяти
26:50
которая переключается любым входящим
26:52
сигналом и из которой этот сигнал нужно
26:54
доставать а ещё в стрелочка с самого
26:57
начала была одна огромная проблема Не
27:00
все стрелочки в них являются стрелочками
27:02
например вот этот вот источник сигнала
27:05
Который изначально был
27:07
вдохновлённая является каким-то
27:09
квадратом а не стрелочкой но спустя 10
27:12
лет я нашёл решение этой проблемы теперь
27:16
это тоже стрелочка направленная в четыре
27:18
стороны а ещё Заодно я сделаю
27:20
симметричный дизайн для той не до конца
27:22
симметричной стрелочки изначально я
27:25
хотел перевести стрелочки на много раз
27:27
языков но тут есть одна не очевидная
27:30
трудность с каждым новым обновлением все
27:32
новые фичи тоже придётся переводить на
27:35
все эти языки но тем не менее четыре
27:37
языка уже есть а за помощь с переводом
27:39
Спасибо нспу копитко андрию и Марине
27:42
лимон а ещё иногда хочется в игру быстро
27:45
что-то новое добавить ни у кого не
27:46
спрашивая перевод поэтому если найдёте
27:48
ошибки в переводе то Пишите в Telegram
27:50
канал или в дискорде кстати изначально в
27:53
стрелочка было очень странное управление
27:55
Ну то есть мне оно казалось удобным Но
27:56
когда я пока показывал его другим людям
27:58
оно им казалось очень необычным чтобы
28:00
поставить стрелочку нужно было нажать на
28:03
цифру на клавиатуре например чтобы
28:04
поставить первую стрелочку нужно было
28:06
нажать на один и туда куда направлен
28:08
курсор мыши ставилась стрелочка с одной
28:10
стороны Мне это казалось даже удобным и
28:12
программировать такое управление было
28:14
очень просто но когда я показывал его
28:16
другим людям Они считали его не очень
28:18
интуитивным Поэтому я решил поменять
28:20
управление на что-то вроде управление из
28:22
крио то есть мы выбираем стрелочку и
28:25
можем её мышкой поставить на Q У нас
28:27
есть тка которой мы можем взять уже
28:28
поставленную стрелочку и поставить такую
28:30
же а на е можно выделить несколько
28:32
скопировать их и вставить сейчас кстати
28:35
большая часть управления в самой игре
28:37
нигде не объясняется поэтому
28:38
подписывайтесь на Telegram канал или на
28:40
discord по стрелочкам а стрелочки кстати
28:43
полностью бесплатные поэтому для
28:45
поддержки можете подписаться на бусте а
28:47
также на Telegram канал или на discord
28:49
по стрелочкам А ещё Рассказывайте о них
28:51
своим друзьям это будет лучшая поддержка
28:53
и всем
28:56
пока
29:06
[музыка]
29:18
а