background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "3D Game Programming - Episode 2 - Game Loop"

input logo icon
Теги видео
|

Теги видео

3D
Game
Programming
Development
in
Java
tutorial
how
to
make
games
first
person
shooter
fps
from
scratch
java
game
making
programming
development
kit
jdk
eclipse
ide
minecraft
code
notch
(programming
language)
First-person Shooter
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
как дела, ребята, добро пожаловать ко
00:00:02
второму эпизоду моих руководств по разработке 3D-игр на Java,
00:00:06
э-э, это именно то место, где мы
00:00:08
остановились, ничего не меняли, мы
00:00:10
просто мы готовы продолжать работать
00:00:13
над этой, э-э, над этой эпической игрой, гм, первое, что нужно сделать
00:00:16
Я хочу сказать, что нам
00:00:20
нужно сделать некоторые действительно важные вещи
00:00:21
сегодня, возможно, самые важные
00:00:24
вещи, на ранних этапах
00:00:26
разработки, и первое, что нам
00:00:28
нужно поговорить о потоках, поэтому первое, что
00:00:30
я хочу сделать, это создать поток,
00:00:33
хорошо, поэтому я объясню этот код прямо сейчас, на
00:00:36
самом деле Private - это
00:00:38
модификатор видимости, в основном частный говорит, что
00:00:39
только этот класс может использовать потоки, хорошо,
00:00:44
только отображение. Java может использовать эту общедоступную информацию, что
00:00:47
означает, что все во всем этом
00:00:48
чертовом мире могут ее использовать, гм, по сути, могут ее видеть,
00:00:52
поэтому конфиденциальность означает, что да,
00:00:54
только отображение. Java может видеть
00:00:56
поток - это, по сути, способ
00:01:00
объяснить поток: он позволяет вам
00:01:03
выполнять несколько задач одновременно, чтобы вы
00:01:05
знали одновременно, что, как вы
00:01:08
понимаете, очень важно для игр,
00:01:09
потому что мы, мы, мы хотим иметь возможность для рендеринга
00:01:11
нескольких вещей одновременно, все эти
00:01:14
хорошие вещи, я не буду вдаваться
00:01:15
в подробности, и вы, как вы знаете, в Java, чтобы
00:01:18
создать поток для создания объекта, который нам
00:01:20
нужно создать, хорошо, подождите, чтобы использовать его, нам
00:01:22
нужно создайте объект, и нам нужно
00:01:24
дать этому объекту имя, поэтому я просто
00:01:25
назвал его тредом, потому что это легко
00:01:27
запомнить, хм, и еще одна вещь, которую я хочу
00:01:29
создать,
00:01:30
это снова издевательство, личное хм, и
00:01:34
издевательство - это что-то истинное или
00:01:35
ложное, окей два возможных значения: true или
00:01:38
false, хм, и я назову его
00:01:39
запущенным, и я хочу установить для него значение false,
00:01:41
потому что в данный момент он не работает,
00:01:44
хм, наша игра в данный момент не запущена,
00:01:46
еще нет, это хм, да, так что следующее
00:01:49
что нам нужно сделать, так это
00:01:50
инициализировать этот поток, и мы это
00:01:53
сделаем так: я создам
00:01:56
метод, называемый
00:02:00
start um, и в этом методе я
00:02:03
просто проверю um на наличие чего-то
00:02:06
действительно важного. быстро, я пойду, если
00:02:07
запускаю return, и это может быть
00:02:11
немного сложно понять, поэтому я
00:02:12
объясню, это своего рода способ,
00:02:14
которым я хочу делать эти уроки, я не
00:02:16
хочу добавлять слишком много кода сразу я бы
00:02:18
предпочел более короткие видео, где я добавляю, ну,
00:02:20
знаете, примерно 10-20 строк кода, но я
00:02:22
объясняю все для всех вас, ребята,
00:02:24
которые не понимают, что это значит, ну,
00:02:27
вы знаете, я объясню это вам, ребята, так
00:02:29
что вы не можете понять, что это
00:02:30
значит, потому что в этом и есть
00:02:32
суть руководства. Если вы хотите
00:02:33
скопировать код у кого-то, кого вы только знаете,
00:02:36
просто скачайте игру Like An Open Source
00:02:38
или что-то, что вы знаете,
00:02:40
загрузите исходный код на и с вами все
00:02:42
будет в порядке, так что да, по сути,
00:02:46
это оператор if, и он по
00:02:47
сути говорит, что если выполнение равно true,
00:02:50
то верните сейчас, что означает return, это
00:02:52
выход из
00:02:54
метода, потому что причина, по которой мы
00:02:56
это набираем код, потому что подумайте об
00:02:58
этом, если все это уже запущено, поэтому, если
00:03:01
запуск равен true, мы не хотим
00:03:03
снова инициализировать игру, потому что она
00:03:05
уже запущена, поэтому игнорируйте это, но если
00:03:09
она не запущена, то не возвращайтесь,
00:03:12
другими словами, не надо выходите из этого метода,
00:03:14
продолжайте делать все, что ниже, и,
00:03:17
кстати, если вы нажмете клавишу Control Shift F на
00:03:19
клавиатуре, это приведет к форматированию
00:03:21
вашего кода, другими словами, если вы
00:03:24
собираетесь 600 + 23, я не знаю, делим
00:03:26
на 6 * 8 да, control sh F, и это будет
00:03:31
очень красиво, так что да, это
00:03:32
сдвиг управления, хм, мы могли бы поместить это
00:03:35
в фигурные скобки, я обычно люблю помещать операторы
00:03:37
if и фигурные скобки, скобки, хм,
00:03:40
но вам это не нужно и потому что это
00:03:42
одно слово, возврат выглядит лучше, если
00:03:44
вы этого не сделаете, да, окей, так что, если это
00:03:49
другими словами, если он не работает, тогда установите для запуска
00:03:53
значение true, потому что мы хотим, чтобы он
00:03:55
начал работать, гм, и самое
00:03:57
важное, вероятно, это на самом деле
00:03:58
инициализируем поток, и мы делаем
00:04:00
это следующим образом: поток равен новому
00:04:02
потоку,
00:04:04
этот хм, и снова он не определен, потому что
00:04:09
нам нужно
00:04:10
реализовать
00:04:15
работоспособный хм, и да, больше никаких ошибок,
00:04:17
это выдает нам ошибку здесь, потому что вы
00:04:20
знаете, что нам нужно, чтобы мы на самом деле нужно запустить,
00:04:22
нам на самом деле нужно создать здесь метод
00:04:23
под названием
00:04:25
run public void run, и у нас нет
00:04:31
ошибок, ура, окей, так что это довольно
00:04:35
просто, и еще одна вещь, которую вы хотите
00:04:36
сделать, это на самом деле запустить
00:04:38
поток, вот как мы инициализируем
00:04:41
поток хм, и еще одна
00:04:44
вещь, которую я хочу добавить на
00:04:45
этом этапе, это на самом деле метод остановки, в
00:04:48
этом нет необходимости, но
00:04:50
потому что я хочу, чтобы это запускалось как
00:04:52
апплет позже, хм, и, по сути, что за
00:04:55
апплет - это то, что он позволяет
00:04:58
запускать его внутри браузера, поэтому я
00:05:01
считаю, что наиболее популярным примером является то, что если
00:05:03
вы думаете о Minecraft, то если вы зайдете на
00:05:05
minecraft.net, вы действительно сможете играть в
00:05:06
игру внутри веб-браузера, потому что это
00:05:08
апплет, так что я знаю,
00:05:10
что всегда хорошо иметь возможность сделать это
00:05:12
в будущем, так что это то, что я хочу
00:05:14
сделать прямо сейчас, поэтому я создаю метод остановки,
00:05:16
так что это, по сути, обратный
00:05:18
методу запуска, гм, восклицательный знак
00:05:20
означает, что нет так что, если он не работает,
00:05:23
не беспокойтесь об этом методе, выйдите из
00:05:25
этого метода, если он не работает, потому что,
00:05:26
если он не работает, то у нас уже есть F,
00:05:28
мы уже выполнили свой долг, так
00:05:30
что, если он не работает, то
00:05:34
запустите его, извините если он запущен, и
00:05:36
мы хотим его остановить, тогда установите запуск, возьмите
00:05:39
false и поток.
00:05:41
присоединяйтесь к нам, и нам на самом деле нужно, нам
00:05:45
действительно нужно попробовать сделать, вы можете видеть,
00:05:47
что там написано, что вы знаете, окружите
00:05:50
попробуйте и поймайте, я просто собираюсь напечатать это,
00:05:51
поэтому попробуйте присоединиться к этой теме, и если
00:05:55
это не удастся, тогда просто поймать исключение,
00:06:02
и это обычный
00:06:05
синтаксис Java, а затем мы хотим выйти из него,
00:06:09
очевидно, да, так что это почти
00:06:11
наш метод запуска и остановки,
00:06:13
сколько времени у нас есть 6 минут, блестяще,
00:06:17
гм, быстро объясните это, ну, я собирался
00:06:19
попробовать и присоединиться, э-э, и присоединиться, он
00:06:22
будет ждать, он будет ждать, пока
00:06:24
поток умрет, поэтому он попытается
00:06:25
завершить поток, если это не сработает,
00:06:27
тогда он будет генерировать исключение,
00:06:29
и снова мы создаем
00:06:30
объект исключения мы назвали это, хм,
00:06:33
что он собирается сделать, так это
00:06:34
напечатать St stack Trace, что действительно
00:06:36
сложно объяснить, а затем он
00:06:38
фактически выйдет из программы, так что да, хм,
00:06:41
это наш старт и остановка, хм, и,
00:06:44
наконец, я тоже хочу чтобы создать основную
00:06:46
игру Loop game Loop, и как мы собираемся
00:06:48
это сделать, мы сделаем цикл while, чтобы
00:06:50
во время работы было равно true, делайте
00:06:53
все, что там есть, и мы поговорим
00:06:54
об этом в следующий раз, хм, еще одна вещь, которую
00:06:57
я хочу на самом деле, о чем говорить,
00:07:00
мне очень нравится проверять, работает ли этот код в
00:07:02
настоящее время, другими словами,
00:07:04
работает ли он, потому что, если я кодирую
00:07:06
час, а затем возвращаюсь, а потом я
00:07:07
типа зависаю на этом, это не так.
00:07:09
Знаешь, это даже не работает, и, очевидно,
00:07:11
это не сработает, оно не
00:07:12
выдаст нам ошибку, потому что синтаксис
00:07:14
правильный, хм, так скажем, если у нас была
00:07:17
подобная ошибка, и если он не работает, бла-
00:07:19
бла-бла, хм, тогда если мы запустим его, ты знаешь,
00:07:22
мы не увидим разницы,
00:07:23
он работает, он работает нормально,
00:07:26
кстати, здесь, хм, так что мы, хм,
00:07:30
то, как я люблю это проверять, это
00:07:31
просто пойти, сестренка, ох, подожди, мне,
00:07:36
наверное, стоит,
00:07:38
хм на самом деле инициализируем этот метод, хм,
00:07:43
как вы можете видеть, на самом деле мы не используем
00:07:44
остановку, но мы сделаем это позже,
00:07:45
когда мы перейдем к апплету, хм,
00:07:48
да, если да, то если все в порядке, то то, что
00:07:52
делает этот код, то же самое игра, это
00:07:54
хорошая вещь в Eclipse, а также, если
00:07:56
вы нажмете на свой ум, если вы поставите типичную
00:07:58
штуку на слово, он выделит
00:08:00
все слова с тем же именем, чтобы мы могли
00:08:03
видеть, что игра является объектом этого
00:08:05
класса отображения, поэтому он
00:08:08
собирается он будет искать в этом классе
00:08:10
метод под названием start, который находится
00:08:12
прямо здесь, и, очевидно,
00:08:14
вы знаете, запустите этот метод, так что это
00:08:16
действительно важно, и что нам нужно сделать, так это
00:08:18
лучше всего проверить код способ
00:08:21
сделать это - просто
00:08:23
напечатать строку,
00:08:26
и я не знаю, как это
00:08:31
работает, и что это будет делать,
00:08:34
если мы запустим его, как вы можете видеть, я
00:08:35
специально допустил здесь ошибку, мы будем типа
00:08:38
хм, он работает, но это не работает, почему
00:08:40
тогда ты возвращаешься и думаешь: о, да,
00:08:41
конечно, я положил это сюда,
00:08:44
запусти, и да, это работает, хм, так что это своего
00:08:48
рода способ проверить это, мы
00:08:50
не делаем, мы, очевидно, не делаем мне это не нужно,
00:08:52
но да, так что мне нравится
00:08:54
делать это именно так, и это, вероятно, конец
00:08:58
этого урока, хм в следующий раз, я думаю,
00:09:01
мы начнем с некоторых графических вещей,
00:09:03
я не
00:09:04
уверен, Х да, мы, вероятно, так и сделаем
00:09:06
обязательно посмотрите следующий урок, который
00:09:08
выйдет завтра. Я
00:09:10
постараюсь делать по одному такому каждый
00:09:12
день,
00:09:14
хм, и да, так что завтра мы
00:09:16
попробуем и позвольте мне просто отформатировать это, хм,
00:09:18
завтра мы собираемся попробуйте
00:09:19
реализовать некоторые графические вещи, возможно,
00:09:21
нарисуйте несколько пикселей на экране,
00:09:22
так что это будет интересно, и да, вот и все,
00:09:25
увидимся позже, ребята,
00:09:28
пока
00:09:32
[Музыка]
00:09:43
он

Описание:

Episode 1: https://www.youtube.com/watch?v=iH1xpfOBN6M Welcome to a series of videos where we will create a 3D game (probably a first person shooter) from scratch, using just the included libraries in Java 1.6. If you have any questions or problems, leave a comment or send me a message, or tweet at me. Tell me if you want more! Twitter: http://twitter.com/#!/thecherno Livestream: https://www.twitch.tv/thecherno Eclipse: https://www.eclipse.org/downloads/ (Java IDE for Java Developers).

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "3D Game Programming - Episode 2 - Game Loop"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "3D Game Programming - Episode 2 - Game Loop" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "3D Game Programming - Episode 2 - Game Loop"?mobile menu icon

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

mobile menu iconКак скачать видео "3D Game Programming - Episode 2 - Game Loop" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "3D Game Programming - Episode 2 - Game Loop"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "3D Game Programming - Episode 2 - Game Loop"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.