跳转到内容

ZZT-OOP/简介

来自维基教科书,开放世界中的开放书籍

ZZT-OOP是DOS游戏创作系统ZZT使用的原始面向对象脚本语言。该语言由Epic MegaGames(现为Epic Games)的Tim Sweeney创建。

ZZT的历史

[编辑 | 编辑源代码]

ZZT于1991年制作。这是Epic的第一个版本;虽然它并没有特别成功,但它确实引起了人们的关注。在3.2版(被认为是“官方”ZZT的版本)之后,Tim Sweeney停止了开发,转而从事其他项目,如Jill of the JungleZZT的续集,Super ZZT,具有更高级的功能,但它从未取得其前辈的成功。原始版本的源代码丢失了,阻止了任何进一步版本的开发,尽管它最终在2020年通过逆向工程重建了多年[1]

1997年,Epic决定发布ZZT和随附的四个游戏作为共享软件,因为该程序在图形和声音方面都严重过时。尽管年龄很大,ZZT仍然吸引着人们的关注,并且今天仍然存在一个围绕它的在线社区。近年来,人们做了很多尝试来改进该程序,从破解ZZT可执行文件本身到编写类似于ZZT但具有一些新功能的模拟器。ZZT甚至启发了各种其他由粉丝创建的游戏创作系统,例如ZIGMegaZeux。但是,原始的ZZT 3.2仍然是最广泛使用的版本。

ZZT概述

[编辑 | 编辑源代码]

ZZT-OOP语言是ZZT的组成部分;因此,为了用ZZT-OOP编写程序,您必须对ZZT有所了解。ZZT本身不可玩;它是一个解释器,可以通过它玩ZZT游戏。这些游戏被称为世界,通常将所有代码包含在一个扩展名为.ZZT的文件中。

世界结构

[编辑 | 编辑源代码]

每个世界中的空间都分为称为棋盘的段。棋盘的显示大小是固定的,玩家一次只能查看一个棋盘。但是,这些棋盘可以连接在一起,从而产生连续景观的错觉。为了澄清这个概念,假设您正在设计一些ZZT中的地下城。地下城的入口将位于一个棋盘上。这个棋盘上的入口可能连接到第二个棋盘,该棋盘包含地下城的第一个房间和一个楼梯。楼梯将连接到第三个棋盘,该棋盘将包含地下城的一部分。这个棋盘可能连接到其他棋盘,这些棋盘包含相邻的地下城房间,等等。请注意,比例并不总是保持一致;例如,每个地下城棋盘可能只包含几个房间,而包含地下城入口的棋盘可以制成该区域中所有其他事物的缩小地图。当玩家离开他或她所在的棋盘时,该棋盘会从视线中消失,取而代之的是他或她移动到的棋盘。

世界文件中每个棋盘都是可玩的,除了文件中的第一个棋盘。这个棋盘被称为标题屏幕,因为它是用户加载游戏时看到的第一个棋盘。由于玩家无法实际玩它,标题屏幕通常用作游戏的启动屏幕;但是,ZZT-OOP代码仍然会运行,这允许显示简单的动画甚至介绍性过场动画。

棋盘结构

[编辑 | 编辑源代码]

每个棋盘上的地形都基于一个60x25的图块网格。每个图块都是屏幕上的一个块,具有特定的外观和属性。由于ZZT在文本模式下运行,因此每个图块都是字符大小的,具有 256 个 ASCII 字符之一的外观,并且具有前景色和背景色。地形限制了玩家的移动能力,但它通常仅用于创建有趣的后景。虽然“地形”一词意味着户外环境,但它也用于构建室内特征,例如墙壁。地形可以从代表房间的简单盒子到更具装饰性的有机棋盘;使用不同颜色的地形,甚至可以绘制简单的图片。

图块不仅限于表示地形;各种物品和生物也可以放在棋盘上。所有图块类型的详细列表超出了本简介的目的;但是,这里将提到其中一种最实用的图块类型;对象。对象很重要,因为与大多数其他图块类型不同,对象图块可以包含 ZZT-OOP 程序。这允许世界设计者自定义对象行为。例如,假设您想用怪物填充一个地下城,但您不想使用ZZT的内置敌人。设计好地下城并铺好适当的地形后,您将在棋盘上添加几个对象。然后,您将编写一个 ZZT-OOP 程序,该程序将指导他们如何攻击玩家;本书将介绍如何编写此类程序。

学习ZZT-OOP的原因

[编辑 | 编辑源代码]

学习ZZT-OOP有很多理由

  • ZZT-OOP 是编写原创ZZT游戏所必需的。虽然可以不用了解ZZT-OOP就制作ZZT游戏,但您只能使用预编程的物品和敌人。
  • ZZT-OOP 是一种很好的入门编程语言。虽然您无法将ZZT-OOP中的编程变成职业,但它是一种学习编程基础知识的有趣且轻松的方式。
  • ZZT-OOP(和ZZT)是一种有趣的爱好。为ZZT编写游戏是表达您的创造力的一个很好的媒介,而且很容易在网上找到愿意玩您游戏的人。
  • ZZT-OOP 限制性很强,但以一种有趣的方式。由于该语言仅用于简单的冒险游戏,因此在其他语言中很容易的代码在 ZZT-OOP 中却成为一项挑战。但是,我们中有些人喜欢这样的挑战,尽管它不会让你找到约会对象或工作,但能够使用过时的游戏创作系统编写复杂的东西(例如分形生成程序)却相当令人印象深刻。

参考文献

[编辑 | 编辑源代码]
  1. https://github.com/asiekierka/reconstruction-of-zzt {{citation}}: Missing or empty |title= (help)
华夏公益教科书