|
1 | | -# 前言 |
| 1 | +# 零、前言 |
2 | 2 |
|
3 | | -网络组装是一项技术,它将在未来几年内改变我们所知的网络。WebAssembly 承诺实现一个基于 web 的应用以接近本机速度运行的世界。在这个世界里,你可以用你喜欢的任何语言为网络编写应用,并为本地平台和网络编译它。WebAssembly 现在还为时过早,但这项技术已经像火箭一样起飞了。如果你对网络的发展方向感兴趣,就像对今天一样,那就继续读下去吧! |
| 3 | +WebAssembly是一项技术,它将在未来几年内改变我们所知的网络。WebAssembly 承诺实现一个基于 web 的应用以接近本机速度运行的世界。在这个世界里,你可以用你喜欢的任何语言为网络编写应用,并为本地平台和网络编译它。WebAssembly 现在还为时过早,但这项技术已经像火箭一样起飞了。如果你对网络的发展方向感兴趣,就像对今天一样,那就继续读下去吧! |
4 | 4 |
|
5 | | -我写这本书是为了反映我喜欢学习新技能的方式。我将引导你使用网络组装及其所有相关技术开发一款游戏。我是一名长期的游戏和网页开发人员,我一直喜欢通过写游戏来学习新的编程语言。在本书中,我们将使用与网络组装齐头并进的网络和游戏开发工具,在许多主题上覆盖许多领域。我们将学习如何利用过多的编程语言和工具来编写以网络组装为目标的游戏,包括 Emscripten、C/C++、WebGL、OpenGL、JavaScript、HTML5 和 CSS。作为一家专门从事网络游戏开发的独立游戏开发工作室的长期所有者,我发现对网络和游戏技术有广泛的了解是至关重要的,我已经把这本书塞满了它们。您将学习一系列技能,重点是使用网络组装启动和运行您的应用。如果你想学习如何用 WebAssembly 开发游戏,或者如果你想创建速度极快的基于 web 的应用,这本书就是为你准备的。 |
| 5 | +我写这本书是为了反映我喜欢学习新技能的方式。我将引导你使用WebAssembly及其所有相关技术开发一款游戏。我是一名长期的游戏和网页开发人员,我一直喜欢通过写游戏来学习新的编程语言。在本书中,我们将使用与WebAssembly齐头并进的网络和游戏开发工具,在许多主题上覆盖许多领域。我们将学习如何利用过多的编程语言和工具来编写以WebAssembly为目标的游戏,包括 Emscripten、C/C++、WebGL、OpenGL、JavaScript、HTML5 和 CSS。作为一家专门从事网络游戏开发的独立游戏开发工作室的长期所有者,我发现对网络和游戏技术有广泛的了解是至关重要的,我已经把这本书塞满了它们。您将学习一系列技能,重点是使用WebAssembly启动和运行您的应用。如果你想学习如何用 WebAssembly 开发游戏,或者如果你想创建速度极快的基于 web 的应用,这本书就是为你准备的。 |
6 | 6 |
|
7 | 7 | # 这本书是给谁的 |
8 | 8 |
|
9 | 9 | 这本书不是编程入门。它是为那些知道如何用至少一种编程语言编码的人设计的。至少对一些基于网络的技术(如 HTML)有一个初步的了解是有帮助的,但不是绝对必要的。这本书包含了如何在 Windows 或 Ubuntu Linux 上安装所需工具的说明,在这两者中,我会推荐使用 Ubuntu,因为它的安装过程要简单得多。 |
10 | 10 |
|
11 | 11 | # 这本书涵盖了什么 |
12 | 12 |
|
13 | | -[第 1 章](01.html)*WebAssembly 和 Emscripten 简介*介绍了 web assembly,为什么 web 需要它,为什么它比 JavaScript 快这么多。我们将介绍 Emscripten,为什么我们需要它来进行网络组装开发,以及如何安装它。我们还将讨论与 WebAssembly 相关的技术,例如 asm.js、LLVM 和 WebAssembly Text。 |
| 13 | +[第 1 章](01.html)*WebAssembly 和 Emscripten 简介*介绍了 web assembly,为什么 web 需要它,为什么它比 JavaScript 快这么多。我们将介绍 Emscripten,为什么我们需要它来进行WebAssembly开发,以及如何安装它。我们还将讨论与 WebAssembly 相关的技术,例如 asm.js、LLVM 和 WebAssembly Text。 |
14 | 14 |
|
15 | 15 | [第二章](02.html)、 *HTML5 和 WebAssembly* 讨论了 WebAssembly 模块如何使用 JavaScript“粘合代码”与 HTML 集成。我们将学习如何创建自己的 Emscripten HTML shell 文件,我们还将学习如何调用我们的 WebAssembly 模块,我们将用 c 语言编写该模块。最后,我们将学习如何编译和运行一个与我们的 WebAssembly 模块交互的 HTML 页面,我们还将学习如何使用 Emscripten 构建一个简单的 HTML5 Canvas 应用。 |
16 | 16 |
|
17 | 17 | [第 3 章](03.html)、*WebGL 介绍*,介绍 WebGL 以及支持它的新画布上下文。我们将了解着色器,它们是什么,以及 WebGL 如何使用它们将几何图形渲染到画布上。我们将学习如何使用 WebGL 和 JavaScript 在画布上绘制一个精灵。最后,我们将编写一个集成了 WebAssembly、JavaScript 和 WebGL 的应用,显示一个精灵并在画布上移动它。 |
18 | 18 |
|
19 | | -[第 4 章](04.html)、*与 SDL 的网络组装中的雪碧动画*,教你关于 SDL 库,以及我们如何使用它来简化从网络组装到网络 GL 的调用。我们将学习如何使用 SDL 渲染,动画和移动 HTML5 画布上的精灵。 |
| 19 | +[第 4 章](04.html)、*与 SDL 的WebAssembly中的雪碧动画*,教你关于 SDL 库,以及我们如何使用它来简化从WebAssembly到网络 GL 的调用。我们将学习如何使用 SDL 渲染,动画和移动 HTML5 画布上的精灵。 |
20 | 20 |
|
21 | | -[第 5 章](05.html)、*键盘输入*,介绍如何从 JavaScript 中获取键盘输入并调用 WebAssembly 模块。我们还将学习如何在我们的网络组装模块中使用 SDL 接受键盘输入,并使用输入在 HTML5 画布上移动精灵。 |
| 21 | +[第 5 章](05.html)、*键盘输入*,介绍如何从 JavaScript 中获取键盘输入并调用 WebAssembly 模块。我们还将学习如何在我们的WebAssembly模块中使用 SDL 接受键盘输入,并使用输入在 HTML5 画布上移动精灵。 |
22 | 22 |
|
23 | | -[第六章](06.html)、*游戏物件和游戏循环*,探索一些基本的游戏设计。我们将了解游戏循环,以及网络组装中的游戏循环与其他游戏有何不同。我们还将学习游戏对象以及如何在游戏中创建对象池。我们将以编写游戏开始的代码来结束这一章,两个宇宙飞船在画布上移动并互相发射炮弹。 |
| 23 | +[第六章](06.html)、*游戏物件和游戏循环*,探索一些基本的游戏设计。我们将了解游戏循环,以及WebAssembly中的游戏循环与其他游戏有何不同。我们还将学习游戏对象以及如何在游戏中创建对象池。我们将以编写游戏开始的代码来结束这一章,两个宇宙飞船在画布上移动并互相发射炮弹。 |
24 | 24 |
|
25 | 25 | [第七章](07.html)*碰撞检测*,将碰撞检测引入我们的游戏。我们将探索 2D 碰撞检测的类型,实现一个基本的碰撞检测系统,并了解一些使其工作的三角学知识。我们将修改我们的游戏,这样当飞船相撞时,投射物就会摧毁它们。 |
26 | 26 |
|
|
32 | 32 |
|
33 | 33 | [第十一章](11.html)*设计一台 2D 相机*,引入了 2D 相机设计的概念。我们将首先在我们的游戏中添加一个渲染管理器,并创建一个锁定玩家飞船的摄像头,跟随它在一个扩大的游戏区域内移动。然后,我们将添加先进的 2D 相机功能的投影焦点和相机吸引。 |
34 | 34 |
|
35 | | -[第 12 章](12.html)、*音效 FX* ,涵盖了 SDL 音频在我们游戏中的使用。我们将讨论在哪里可以在线获得声音效果,以及如何将这些声音包含在我们的网络组装模块中。然后我们将在游戏中加入音效。 |
| 35 | +[第 12 章](12.html)、*音效 FX* ,涵盖了 SDL 音频在我们游戏中的使用。我们将讨论在哪里可以在线获得声音效果,以及如何将这些声音包含在我们的WebAssembly模块中。然后我们将在游戏中加入音效。 |
36 | 36 |
|
37 | 37 | [第十三章](13.html)*游戏物理*,介绍了电脑游戏中的物理概念。我们将在游戏对象之间增加弹性碰撞。我们将以宇宙飞船发射射弹时的后坐力形式,将牛顿第三定律加入到我们的游戏物理中。我们将在我们的恒星上增加一个引力场来吸引宇宙飞船。 |
38 | 38 |
|
39 | | -[第 14 章](14.html)、*用户界面和鼠标输入*,讨论了在我们的网络组装模块中添加一个要管理和呈现的用户界面。我们将收集需求,并将其转化为我们游戏的新屏幕。我们将添加一个新的按钮对象,并学习如何使用 SDL 在我们的网络组装模块中管理鼠标输入。 |
| 39 | +[第 14 章](14.html)、*用户界面和鼠标输入*,讨论了在我们的WebAssembly模块中添加一个要管理和呈现的用户界面。我们将收集需求,并将其转化为我们游戏的新屏幕。我们将添加一个新的按钮对象,并学习如何使用 SDL 在我们的WebAssembly模块中管理鼠标输入。 |
40 | 40 |
|
41 | 41 | [第 15 章](15.html)*着色器和 2D 照明*,深入探讨如何创建一个混合了 OpenGL 和 SDL 的新应用。我们将创建一个新的着色器,将多个纹理加载并渲染到一个四边形中。我们将学习普通地图,以及如何使用普通地图来近似 2D 的 Phong 照明模型,在我们的 WebAssembly 模块中使用 OpenGL。 |
42 | 42 |
|
43 | | -[第十六章](16.html)、*调试和优化*,介绍了调试和优化 WebAssembly 模块的基本方法。我们将从调试宏和网络组装的堆栈跟踪开始。我们将介绍源映射的概念以及网络浏览器如何使用它们来调试网络组装模块。我们将学习如何使用优化标志来优化 WebAssembly 代码。我们将讨论使用分析器来优化我们的 WebAssembly 代码。 |
| 43 | +[第十六章](16.html)、*调试和优化*,介绍了调试和优化 WebAssembly 模块的基本方法。我们将从调试宏和WebAssembly的堆栈跟踪开始。我们将介绍源映射的概念以及网络浏览器如何使用它们来调试WebAssembly模块。我们将学习如何使用优化标志来优化 WebAssembly 代码。我们将讨论使用分析器来优化我们的 WebAssembly 代码。 |
44 | 44 |
|
45 | 45 | # 充分利用这本书 |
46 | 46 |
|
|
0 commit comments