PICO-8的第一步

在到达那里之前,先了解一下背景

当我刚开始教学时的一个学期,我被要求在最后一分钟为平面设计师讲授HTML / CSS入门课程。 在设置课程内容的同时,我上这门课程时希望学生会知道或至少知道如何查找两个特定的东西。 首先,我希望学生会了解互联网的工作原理,其次,我希望学生会知道HTML和CSS文件的用途。 我做错了多少,这是这篇文章的基础,它是我目前正在撰写的一门课程中的“旁白”。

多年来,我已经与其他人讨论了这场灾难。 我所见过的最强点是一位指导老师提出的观点,他建议在基础编程中,我们通常从“ Hello World”或“ Calculate 2 + 2”之类的小步骤开始。经过握手和简短的介绍,学生们然后慢慢介绍了所有形式的概念:变量,数组,IF,函数等。虽然它并不完美,但是像软件公司这样的组织,我们可以看到为使其稳定,常规化,使其更加友好而付出的努力。

学习如何编程的每个步骤都比较复杂,但始终(至少希望始终)与上下文和实践中的先前内容相关。 在HTML / CSS课程中,课程通常不仅仅要求“打招呼”。事实上,当我寻求如何使该课程更有意义的答案时,我在入门课程中看到的最多的项目是:尽管没有教授这两组学生如何编写,在哪里编写以及我们为什么编写HTML / CSS,但是这两组学生都不会受到教。 但是,在这些课程中,我们倾向于对实施和设计进行评分。 这里有巨大的差距,我相信它也会延续到视频游戏中。

例如,我遇到的许多学生似乎都受此困扰,教师也是如此。 “您一直在制作耗资数十亿美元的游戏,让我们学习如何制作!”这没有提供计算机,编程,编程团队或所有这些元素如何交互的知识。 也许这有点夸张,但它比应该的要普遍得多。 我一直在思考整个童年时期创建的行业。 电子游戏开始时几乎没有记忆力,能力不足,而且只不过是在屏幕上拍摄一束光束而在屏幕上绘制的点集而已。 如果我们要教授设计,则应从这里开始。

这导致我考虑将学习编程作为一个历史过程。 在视频游戏和视频游戏的世界中,此过程不应通过Unity或虚幻引擎进行。 不应通过学习任何C语言,动作脚本甚至制作程序来进行。 应该在类似于制作第一个视频游戏的世界的空间中进行。

但是我们永远不能回到那个空间。 相反,我们必须依靠对过去的新解释。 我们必须考虑类似《铁锹之夜》或其他任何复古游戏。 如本文所述:“如果NES的开发从未停止过,该怎么办?”或者,如果Atari,Amiga,Commodore 64或Intellivision仍然是活动控制台,该怎么办? 我们会教我们如何以现在拥有的AAA体验制作游戏,或者我们会从这些早期的游戏机开始吗? 这是PICO-8为我服务的地方。 这是一个完美的工具,可以开始设计,而不会跳过历史,而是要庆祝它。


考虑从PICO-8开始是一种在应用程序和实践中谈论游戏历史的方式,这是很棒的,但是还有很多需要考虑的地方。 现在,我们比以往任何时候都更加了解教育程序员和设计师。

我仍然认为那是HTML / CSS课程。 我想从那门课程的错误中学习。 从那里,以及像格雷格·威尔逊(Greg Wilson)这样的教育家,我可以肯定地说,学习编程的最初障碍。 这些是非常必要的知识,没有人真正告诉过任何人。 我建议有两个问题可以解决。

  1. 什么是代码?
  2. 编码在哪里发生,为什么?

什么是代码?

描述计算机代码的最简单方法是通过级别的概念。 最底层是机器的语言。 我们最经常看到的是一系列1和0。 这些1和0具有模式,以便组成计算机的计算机执行某些活动。 高于此的语言仍被视为低级语言,但这是它的基础。

当然,在低级语言之上是高级语言。 这些语言看起来就像我们在电视节目中以及程序失灵或意外按下某些按钮时在电视上看到的所有语言。 下图应有助于表示这些东西。

上面有一个子问题,“它是如何从高级别变为低级别的?”那么,随着代码从高到低移动,它会被解释和翻译,然后发送到下一个级别,直到它到达机器级别并执行。 这与第二个问题有关。

编码在哪里发生,为什么?

这将从冗长的“为什么”开始。

在较高的层次上,存在由委员会通过“发行版”实施形式化和结构化的语言。这就是为什么您会听到“ HTML 5”或“ Python 3.7”的原因。这些数字表示语言已更改,而这些语言是您以前可能听说过的语言,例如C语言(C,C +,C#等),Python,Processing,Java,甚至是标记语言(例如HTML和CSS)。 这些是我们“编程”的语言,因为它们包含以供人类学习,编写和设计的语言编写的命令。 这些语言的创建方式使人们可以将代码从人类创造的内容解释和翻译为机器所需的功能。 稍后我们将详细讨论。 但是首先,为什么我们要创建“高级”代码?

我们在程序内部创建代码。 在我们的案例中,我们将使用PICO-8。 我们将在此程序中创建代码,因为它包含两个特定的内容:1)。 要写入的未格式化空间,以及2)。 一种运行代码的方式。 代码几乎总是未格式化的。 这意味着它仅包含字母,行和换行符,这些字符不支持任何格式,如粗体,斜体或其他概念。 您不能在所谓的“ RTF”程序中编写代码。

这意味着无法在Microsoft Word文件中或任何字处理器上的文件内部创建代码。 这些文件具有各种与之关联的额外数据,诸如字体,文本格式之类的数据,以及诸如图片之类的其他内容。 这些被称为“富文本”文件。 您将在PICO-8中工作,它将创建扩展名为.p8的无格式文本文件。

这些文件称为.p8时,它们也是纯文本文件。 (这些文件通常记为“ .txt”)。这些文件仅包含两点:换行符和空格。 我们将使用PICO-8创建和运行这些文件,但您也可以在以下程序中创建它们:

  • 崇高文字
  • 记事本++
  • 原子

只要文件名为“ yourgamenamehere.p8”,它就可以至少加载到PICO-8内部。 但是为什么叫它呢? 这是什么意思呢?

好吧,让我们从上图开始。 最顶层是一些编程语言。 PICO-8的语言是另一种称为LUA的编程语言的一种形式。 像FORTRAN,C和PASCAL一样,它们都是高级语言。 您使用所需的语言编写程序,然后通过解释器运行它或对其进行编译。 那么,什么将语言转换或翻译成较低的水平呢?

对于PICO-8,将对所编写的语言,命令,所编写的.p8文件进行解释和翻译,然后将其发送给机器语言,最后发送给硬件(最终几乎是瞬时地)。 这意味着,一旦您按下run键,您编写的单词和命令就会发送到解释器。 解释器将这些命令转换为汇编语言,然后依此类推,直至硬件。 解释该语言后,您可以看到结果。 PICO-8包含一个翻译器,Lua的解释器,因此,当您运行.p8文件时,每行都会发送到该翻译器,并在需要时存储在内存中。

这就是为什么计算机代码起初如此困难的原因。 您需要准确(至少至少是大多数)知道如何编写代码以获得所需的结果。 计算机语言,尤其是机器语言,是僵化且结构化的。 这些代码行均不能包含任何错误。 如果这样做的话,解释器将停止翻译或编译停止,否则将导致错误。 有时,该程序可以运行,但“无法预测”。但是,代码多久发送一次给翻译器? 这取决于但在PICO-8中,我们确切知道频率。

在本课程中,您将听到有关“ LOOPS”的信息,特别是游戏循环。 这意味着您要在游戏发送的每一帧中向解释器发送特定的代码块(通常以名称_init,_update,_draw来表示)。 因此,当您听到术语30FPS或60FPS时,它意味着每秒将该代码块发送到解释器,翻译并由硬件运行30次或60次。 正如您将在本课程的其余部分中看到的那样,由于对象的位置,颜色或动画逻辑发生了变化,因此玩家会看到前面的动态游戏。 随着课程的继续,我们将对此进行更多的整理。

因此,现在您有了一些基础知识以及这些基础知识的来源背景:

  1. 什么是代码? 嗯,它是文件中未格式化的文本,标有与您用来运行它的程序相关联的扩展名。
  2. 编码在哪里发生,为什么? 它出现在PICO-8内部,该文件会查看并解释.p8文件,并将文件中的代码每秒转换为机器语言30或60次。