浏览代码

Merge branch 'master' of http://213.155.192.79:3001/ypv/ISRPO

ypv 1 年之前
父节点
当前提交
1e2accb12f
共有 4 个文件被更改,包括 260 次插入0 次删除
  1. 142 0
      Лекции/Godot/Godot Engine.md
  2. 二进制
      Лекции/Godot/godot.png
  3. 118 0
      Лекции/Node.js/Node.js.md
  4. 二进制
      Лекции/Node.js/node.js.png

+ 142 - 0
Лекции/Godot/Godot Engine.md

@@ -0,0 +1,142 @@
+## Godot Engine - кроссплатформенный игровой движок
+
+Godot Engine — открытый кроссплатформенный игровой движок для разработки 2D/3D-видеоигр и приложений для ПК, мобильных устройств, веб-платформ. Адаптирован ко всем распространенным операционным системам, включая Linux, macOS, Windows, Android и iOS.
+
+![](godot.png)
+
+Godot разработали в 2007 году два программиста из Аргентины — Хуан Линецкий и Ариэл Манзур. Первоначально его использовали несколько игровых студий Латинской Америки. В 2014 году разработчики выложили движок на GitHub по лицензии MIT. В декабре того же года вышла первая стабильная версия 1.0. С этого момента началось развитие проекта и его распространение в других странах.
+
+## Возможности Godot
+
+Встроенный функционал «Годо» позволяет разработчику с нуля создать полноценную игру или приложение без использования внешних инструментов.
+
+> Работа с двух и трехмерной графикой
+
+Поддержка эффектов отражения, динамических теней, статичного и динамичного глобального освещения, полноэкранной постобработки (засветки, глубины резкости, гамма-коррекции и т.д.).
+
+> Поддержка реалистичной физики
+
+Системы частиц (дыма, тумана, пара, взрывов и т.д.), свойств динамичных и статичных тел, столкновений и разрушений, трассировки лучей и других физических процессов.
+
+> Работа с анимацией
+
+Опции создания скелетной анимации, наложения объектов, кат-сцен в реальном времени.
+
+> Сетка навигации (Navigation mesh) 
+
+Алгоритм нахождения игровым агентом оптимального маршрута в сложном пространстве.
+
+>Поддержка мультимедиа
+
+Воспроизведение аудио и видеофайлов с помощью подключаемых кодеков Theora, OGG Vorbis, WAV.
+
+> AR/VR 
+
+Встроенный мобильный интерфейс дополненной и виртуальной реальности с использованием 3DOF-датчиков на телефоне.
+
+> Подключение устройств ввода 
+
+Клавиатуры, мыши, геймпада и сенсорного экрана.
+
+> Процедурная генерация 
+
+Автоматическое создание внутриигрового контента (окружения, NPC, объектов, оружия и т.д.) с помощью алгоритмов.
+
+> Поддержка языков 
+
+«Годо» имеет свой собственный высокоуровневый язык программирования GDScript, также можно использовать С# и C++.
+
+Возможности Godot можно расширить с помощью плагинов и сторонних приложений. Например, движок позволяет импортировать сцены из Blender с настроенным освещением, камерами, физикой столкновений, анимированными персонажами и т.д. Также есть возможность подключать разработанные самостоятельно или сторонние плагины виртуальной/дополненной реальности, кодеки для воспроизведения видео и аудио, визуальные редакторы.
+
+## Ключевые концепции Godot
+
+Работа движка Godot основана на представлении игры как дерева узлов, которые группируются в сцены и взаимодействуют друг с другом с помощью сигналов и других способов.
+
+> Узлы
+
+Минимальные функциональные единицы игровой архитектуры, «кирпичики», из которых собирается вся игра. Каждый узел может выполнять несколько специализированных функций и имеет следующие атрибуты:
+
+```
+• Уникальное наименование.
+• Изменяемые свойства.
+• Способность расширяться и получать новые функции.
+• Обратную связь для обработки кадров.
+• Способность присоединяться к другим узлам в качестве дочернего.
+```
+
+Узлы различаются по своему назначению. Одни показывают изображение, другие отображают 3D-модели, третьи воспроизводят звук. Подключая один узел к другому, можно получать дерево узлов, обладающее более сложным функционалом. На этом строится основной принцип разработки игры.
+
+> Сцены
+
+Это дерево иерархически соединенных друг с другом узлов. Имеет следующие атрибуты:
+
+```
+• Один корневой узел, к которому, подобно ветвям, подсоединяются дочерние.
+• Возможность сохранения на диск и загрузки обратно в редактор.
+• Возможность создания экземпляров (реплик).
+• Возможность подгружать одни сцены в другие в runtime.
+```
+
+Сценами могут быть персонажи, оружие, локации, целые уровни и другие объекты игрового мира, пользовательский интерфейс в приложениях и т.д. Они обладают двумя важными свойствами:
+
+```
+• Выступают в качестве префабов — «заготовок», задающих изначальную структуру и свойства для экземпляров.
+• Вкладываются друг в друга — например, персонажа можно разместить на уровне, а в руки ему дать оружие или магический посох.
+```
+
+> Дерево сцен
+
+Это совокупность иерархически связанных сцен. Создаваемый в Godot проект (игры, приложение) — последовательность их выполнения. А сам движок — редактор, в котором разработчик продукта определяет порядок и способ исполнения взаимосвязанных сцен. При запуске проекта сначала инициируется основная (корневая) сцена, которая последовательно запускает остальные.
+
+> Сигналы
+
+Это сообщения, отправляемые узлами, когда с ними совершается какое-либо действие. Например, когда пользователь кликает на кнопку, она испускает сигнал. Подключенные узлы реагируют на него и вызывают ответную функцию. При этом узлы, взаимодействующие с помощью сигналов, не ссылаются друг на друга. Это ограничивает их связанность и делает код более гибким.
+
+Вместо программирования по строгим шаблонам Godot предлагает разработчику более гибкий, интуитивно понятный метод создания игр и приложений. Но для использования потенциала движка потребуется знать основы объектно-ориентированного программирования.
+
+## Преимущества Godot
+
+> Простота
+
+Godot — сравнительно простой в освоении и использовании игровой движок. Работать с ним могут как опытные разработчики, так и начинающие энтузиасты. Встроенный язык программирования GDScript имеет почти такой же синтаксис, что и Python, и прост для изучения. Интуитивно понятный редактор, возможность интеграции со сторонними плагинами и приложениями также снижают порог вхождения.
+
+Дополнительные функции, шаблоны, плагины и прочий контент можно скачивать по мере необходимости, не перегружая компьютер. Особенность «Годо» — одинаковый уровень производительности движка и созданных с его помощью игр.
+
+> Поддержка сторонних языков
+
+В ядро Godot уже встроена возможность работы на GDScript, C# и C++. Также модуль GDNative позволяет привязать к ядру движка код, написанный на других языках программирования. С помощью системы VisualScript программировать можно без кода, работая на уровне узлов. Это подходящий вариант для новичков не только в геймдеве, но и в программировании в целом.
+
+> Гибкость
+
+Система деревьев узлов и сцен позволяет разрабатывать игры на интуитивно понятном уровне. Хотя тем, кто работал с другими игровыми движками, подход кажется непривычным.
+
+> Независимое 2D и 3D
+
+Godot создавался как двухмерный игровой движок, 3D-редактирование появилось позже. Разработчики оставили для каждого режима свой редактор, а не стали использовать псевдодвухмерный. Возможность работы с пиксельным 2D упрощает разработку и оптимизацию двухмерных игр. Это ценят разработчики небольших инди-проектов.
+
+> Открытый исходный код 
+
+Godot — бесплатное программное обеспечение, распространяемое по лицензии MIT. Созданные игры и приложения являются собственностью разработчика. Кроме того, открытость движка способствует появлению множества расширений и инструментов. При отсутствии функции в ядре «Годо» ее можно получить, скачав подходящее дополнение с официального сайта или ресурсов, входящих в экосистему.
+
+> Кроссплатформенность
+
+Godot существует в версиях для Windows, Mac, Linux, Android, iOS. Также есть поддержка универсальной платформы UWP от Microsoft, на которой можно разрабатывать приложения для Windows 10, Windows Mobile, Xbox One и виртуальной среды HoloLens без необходимости переписывать код под каждую ОС.
+
+> Обширная документация
+
+По «Годо» есть множество информационных материалов (мануалов, справочников, статей и т.д.) от официальных разработчиков, сторонних профессионалов и энтузиастов-любителей. На любой вопрос по работе с движком можно найти ответ в сообществе.
+
+## Недостатки Godot
+
+> Недостаточная проработка 3D
+
+По этому параметру Godot уступает конкурентам вроде Unity или Unreal Engine. «Годо» развивался как 2D-движок, трехмерный редактор был добавлен позже. В последних версиях работа с 3D значительно улучшена.
+
+> Сложности с разработкой консольных приложений
+
+Разработчики отмечают проблемы при создании или портировании «Годо»-игр на консоли. Это требует использования сторонних инструментов и большого опыта. Одна из возможных причин проблемы — закрытый характер консольных инструментов, что противоречит открытости самого движка.
+
+
+## Литература
+
+[Godot Engine — открытый кроссплатформенный игровой движок для разработки 2D/3D-видеоигр и приложений для ПК, мобильных устройств, веб-платформ.](https://blog.skillfactory.ru/glossary/godot-engine/)

二进制
Лекции/Godot/godot.png


+ 118 - 0
Лекции/Node.js/Node.js.md

@@ -0,0 +1,118 @@
+## Node.js - кроссплатформенная среда выполнения JavaScript с открытым исходным кодом.
+
+Node.js — это опенсорсная кроссплатформенная среда выполнения для JavaScript, которая работает на серверах. С момента выпуска этой платформы в 2009 году она стала чрезвычайно популярной и в наши дни играет весьма важную роль в области веб-разработки. Если считать показателем популярности число звёзд, которые собрал некий проект на GitHub, то Node.js, у которого более 50000 звёзд, это очень и очень популярный проект.
+
+![](node.js.png)
+
+Платформа Node.js построена на базе JavaScript движка V8 от Google, который используется в браузере Google Chrome. Данная платформа, в основном, используется для создания веб-серверов, однако сфера её применения этим не ограничивается.
+
+> Скорость
+
+Одной из основных привлекательных особенностей Node.js является скорость. JavaScript-код, выполняемый в среде Node.js, может быть в два раза быстрее, чем код, написанный на компилируемых языках, вроде C или Java, и на порядки быстрее интерпретируемых языков наподобие Python или Ruby. Причиной подобного является неблокирующая архитектура платформы, а конкретные результаты зависят от используемых тестов производительности, но, в целом, Node.js — это очень быстрая платформа.
+
+> Простота
+
+Платформа Node.js проста в освоении и использовании. На самом деле, она прямо-таки очень проста, особенно это заметно в сравнении с некоторыми другими серверными платформами.
+
+> JavaScript
+
+В среде Node.js выполняется код, написанный на JavaScript. Это означает, что миллионы фронтенд-разработчиков, которые уже пользуются JavaScript в браузере, могут писать и серверный, и клиентский код на одном и том же языке программирования без необходимости изучать совершенно новый инструмент для перехода к серверной разработке.
+
+> Движок V8
+
+В основе Node.js, помимо других решений, лежит опенсорсный JavaScript-движок V8 от Google, применяемый в браузере Google Chrome и в других браузерах. Это означает, что Node.js пользуется наработками тысяч инженеров, которые сделали среду выполнения JavaScript Chrome невероятно быстрой и продолжают работать в направлении совершенствования V8.
+
+> Асинхронность
+
+В традиционных языках программирования (C, Java, Python, PHP) все инструкции, по умолчанию, являются блокирующими, если только разработчик явным образом не позаботится об асинхронном выполнении кода. В результате если, например, в такой среде, произвести сетевой запрос для загрузки некоего JSON-кода, выполнение потока, из которого сделан запрос, будет приостановлено до тех пор, пока не завершится получение и обработка ответа.
+
+JavaScript значительно упрощает написание асинхронного и неблокирующего кода с использованием единственного потока, функций обратного вызова (коллбэков) и подхода к разработке, основанной на событиях. Каждый раз, когда нам нужно выполнить тяжёлую операцию, мы передаём соответствующему механизму коллбэк, который будет вызван сразу после завершения этой операции. В результате, для того чтобы программа продолжила работу, ждать результатов выполнения подобных операций не нужно.
+
+Подобный механизм возник в браузерах. Мы не можем позволить себе ждать, скажем, окончания выполнения AJAX-запроса, не имея при этом возможности реагировать на действия пользователя, например, на щелчки по кнопкам. Для того чтобы пользователям было удобно работать с веб-страницами, всё, и загрузка данных из сети, и обработка нажатия на кнопки, должно происходить одновременно, в режиме реального времени.
+
+Асинхронные механизмы позволяют единственному Node.js-серверу одновременно обрабатывать тысячи подключений, не нагружая при этом программиста задачами по управлению потоками и по организации параллельного выполнения кода. Подобные вещи часто являются источниками ошибок.
+
+Node.js предоставляет разработчику неблокирующие базовые механизмы ввода вывода, и, в целом, библиотеки, использующиеся в среде Node.js, написаны с использованием неблокирующих парадигм. Это делает блокирующее поведение кода скорее исключением, чем нормой.
+
+Когда Node.js нужно выполнить операцию ввода-вывода, вроде загрузки данных из сети, доступа к базе данных или к файловой системе, вместо того, чтобы заблокировать ожиданием результатов такой операции главный поток, Node.js инициирует её выполнение и продолжает заниматься другими делами до тех пор, пока результаты выполнения этой операции не будут получены.
+
+>Библиотеки
+
+Благодаря простоте и удобству работы с менеджером пакетов для Node.js, который называется npm, экосистема Node.js прямо-таки процветает. Сейчас в реестре npm имеется более полумиллиона опенсорсных пакетов, которые может свободно использовать любой Node.js-разработчик.
+
+## Установка Node.js
+
+Node.js можно устанавливать различными способами, которые мы сейчас рассмотрим.
+Так, официальные установочные пакеты для всех основных платформ можно найти на [официальном сайте](https://nodejs.org/en/download/).
+
+Существует ещё один весьма удобный способ установки Node.js, который заключается в использовании менеджера пакетов, имеющегося в операционной системе. Например, менеджер пакетов macOS, который является фактическим стандартом в этой области, называется Homebrew. Если он в вашей системе есть, вы можете установить Node.js, выполнив эту команду в командной строке:
+```
+brew install node
+```
+Список менеджеров пакетов для других операционных систем, в том числе — для Linux и Windows, можно найти [так же на официальном сайте](https://nodejs.org/en/download/package-manager/#windows-1).
+
+Популярным менеджером версий Node.js является nvm. Это средство позволяет удобно переключаться между различными версиями Node.js, с его помощью можно, например, установить и попробовать новую версию Node.js, после чего, при необходимости, вернуться на старую. Nvm пригодится и в ситуации, когда нужно испытать какой-нибудь код на старой версии Node.js.
+
+## Первое Node.js-приложение
+
+Самым распространённым примером первого приложения для Node.js можно назвать простой веб-сервер. Вот его код:
+
+```
+const http = require('http')
+const hostname = '127.0.0.1'
+const port = 3000
+const server = http.createServer((req, res) => {
+  res.statusCode = 200
+  res.setHeader('Content-Type', 'text/plain')
+  res.end('Hello World\n')
+})
+server.listen(port, hostname, () => {
+  console.log(`Server running at http://${hostname}:${port}/`)
+})
+```
+
+Для того чтобы запустить этот код, сохраните его в файле server.js и выполните в терминале такую команду:
+
+```
+node server.js
+```
+
+Для проверки сервера откройте какой-нибудь браузер и введите в адресной строке `http://127.0.0.1:3000`, то есть — тот адрес сервера, который будет выведен в консоли после его успешного запуска. Если всё работает как надо — на странице будет выведено «Hello World».
+
+Разберём этот пример.
+
+Для начала, обратите внимание на то, что код содержит команду подключения модуля [http](https://nodejs.org/api/http.html).
+
+Платформа Node.js является обладателем замечательного [стандартного набора модулей](https://nodejs.org/api/), в который входят отлично проработанные механизмы для работы с сетью.
+
+Метод `createServer()` объекта http создаёт новый HTTP-сервер и возвращает его.
+
+Сервер настроен на прослушивание определённого порта на заданном хосте. Когда сервер будет готов, вызывается соответствующий коллбэк, сообщающий нам о том, что сервер работает.
+
+Когда сервер получает запрос, вызывается событие `request`, предоставляющее два объекта. Первый — это запрос (req, объект [http.IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage)), второй — ответ (res, объект [http.ServerResponse](https://nodejs.org/api/http.html#http_class_http_serverresponse)). Они представляют собой важнейшие механизмы обработки HTTP-запросов.
+
+Первый предоставляет в наше распоряжение сведения о запросе. В нашем простом примере этими данными мы не пользуемся, но, при необходимости, с помощью объекта req можно получить доступ к заголовкам запроса и к переданным в нём данным.
+
+Второй нужен для формирования и отправки ответа на запрос.
+
+В данном случае ответ на запрос мы формируем следующим образом. Сначала устанавливаем свойство statusCode в значение 200, что указывает на успешное выполнение операции:
+
+```
+res.statusCode = 200
+```
+
+Далее, мы устанавливаем заголовок `Content-Type`:
+
+```
+res.setHeader('Content-Type', 'text/plain')
+```
+
+После этого мы завершаем подготовку ответа, добавляя его содержимое в качестве аргумента метода `end()`:
+
+```
+res.end('Hello World\n')
+```
+
+## Литература
+
+[Руководство по Node.js, часть 1: общие сведения и начало работы](https://habr.com/ru/companies/ruvds/articles/422893/)

二进制
Лекции/Node.js/node.js.png