下载客户端

创建自定义机器人街机游戏

2026-04-06 01:00:18
发布在Redirection
转载

AI智能总结导读

这是《Redirection》的机器人街机自定义游戏制作指南,介绍了用Lua语言创建自定义街机游戏的方法,含创建首个游戏的步骤、Lua代码示例,以及GPU、游戏手柄、扬声器等设备的使用说明,还说明了发布游戏到Steam创意工坊的流程。

《Redirection》机器人街机自定义游戏制作指南 入门 在游玩《Redirection》的过程中,你会解锁各种小型街机游戏,可在机器人街机中游玩——机器人街机实际上是一台被重新编程为街机的机器人!本指南将教你如何编写自己的游戏磁盘,以便在机器人街机中游玩。 机器人街机游戏使用Lua编写。如果你不熟悉Lua,可以查看《15分钟学会Lua》指南,它是最容易上手的编程语言之一。 创建你的第一个游戏 1. 从主菜单中选择【模组编辑器】 2. 选择【新建】,并输入游戏名称(稍后可重命名) 3. 选择【打开模组文件夹】 4. 下载街机游戏模板将其提取到模组的资源文件夹中。返回主菜单,选择机器人街机,确认你的新游戏已出现在游戏列表中。编写你的游戏每个街机游戏由一个.disk文件描述,该文件描述一张软盘,并指向包含其内容的文件夹。每张磁盘都包含一个名为boot.lua的lua文件,其中包含机器人启动时运行的代码。一个非常简单的游戏如下:require "system"-- 获取我们需要的设备gpu = system.getDevice( "gpu" )gamepad = system.getDevice( "gamepad" )while true do-- 清屏gpu.clear( 0 )-- 绘制一些文本gpu.drawText( 0, 0, "HELLO WORLD" )if gamepad.getButton( 0 ) thengpu.drawText( 0, 6, "A键被按住" )end-- 休眠一帧system.play( sound[, channel] ) 播放音频通道channel上的sound音效。若未指定通道,则会使用任意空闲通道。返回所选的音频通道,若没有可用通道则返回nil。音效通过包含以下键的表格来描述: 键描述默认值 frequency音效的起始频率,单位为赫兹必填 duration音效的持续时间,单位为秒必填 waveform音效的波形有效值为“square(方波)”“triangle(三角波)”“sawtooth(锯齿波)”和“noise(噪声)” “square” volume(音量) 声音的峰值音量,范围为0到11 attack(起音) 声音淡入所需的时间,单位为秒 0 decay(衰减) 声音淡出所需的时间,单位为秒 0 slide(滑音) 声音频率随时间变化的速率,单位为赫兹每秒 0 duty(占空比) 波形的占空比,范围为0到1。仅对方波产生影响。 0.5 speaker.queue( sound, channel ) 在音频通道channel上播放声音sound,需等待当前声音及所有先前排队的声音播放完成后才开始。 speaker.stop( [channel] ) 若指定了channel,则停止该通道上播放的所有声音。若未指定,则停止所有通道上的所有声音。发布你的游戏 当你对自己的游戏感到满意并准备好与全世界分享时,就可以将你的模组发布到Steam创意工坊了!但首先,请确保你已完成以下操作: 1. 为你的磁盘添加标签。方法是编辑模组资源中与.disk文件一同存放的.png图像。该标签将显示在游戏选择界面的软盘正面。 2. 为你的模组创建缩略图。缩略图需命名为thumbnail.png,尺寸为852x480,并放置在模组的根目录下。此缩略图将显示在Steam创意工坊中。 3. 如果你尚未完成,请接受Steam创意工坊贡献者协议。只有完成此步骤,其他用户才能看到你的模组! 完成上述步骤后,在模组编辑器中选择你的模组,然后点击【发布模组】按钮即可!留意你的模组的订阅者和评论,了解其他玩家对它的反馈。如果你在发布模组后对其进行了任何修改,只需再次点击【发布模组】来上传新版本。你的模组将自动为订阅者更新。 祝你玩得愉快!sleep(0) end 你可以使用require函数和io库来访问磁盘上的其他文件。在机器人街机中,你随时可以按下Ctrl + R重启机器人并查看当前的更改。 要与显示器、扬声器或游戏手柄交互,只需调用相应设备对象的方法即可。一款典型的游戏会在每帧开始时检查输入,执行一些操作,然后在屏幕上绘制图形。有关可用方法的完整文档,请阅读下一节,或查看Steam创意工坊上的示例游戏。 设备使用说明 每台街机机器人都配备了一个单色显示器、一个简单的GPU、一个带2个音频通道的扬声器以及一个2轴2按钮游戏手柄。你可以在启动时调用system.getDevice(type)来访问这些设备,并对返回的对象调用方法。以下是它们最常用方法的概述: 游戏手柄方法 标准机器人游戏手柄有2个轴和2个按钮,你可以按如下方式访问它们的值: gamepad.getButton(index) 返回游戏手柄上指定按钮当前是否被按住。0是A按钮,1是B按钮。 gamepad.getAxis(index) 返回游戏手柄上指定轴的值,范围为-1到1。0是X轴,1是Y轴。 显示方法 标准机器人显示器的分辨率为64x64黑白像素。它持有一个表示其当前屏幕内容的图像对象的引用,你可以使用GPU在该图像对象上进行绘制。 display.getImage() 返回当前显示在屏幕上的图像对象。可将此与gpu.setTarget()配合使用,以便在绘制到其他图像后恢复对屏幕的绘制。 display.setImage(image) 更改屏幕上显示的图像。图像的尺寸必须与屏幕分辨率相匹配。 GPU方法 标准机器人GPU包含硬件加速的2D绘制方法,用于写入图像。默认情况下,GPU会将屏幕图像作为目标,因此调用GPU方法会直接绘制到屏幕上。所有传入GPU绘制函数的位置均为整数像素坐标,左上角为0,0。所有传入GPU绘制函数的颜色均为整数颜色索引,其中0为黑色,1为白色。clear( [颜色] ) 将GPU目标上的所有像素设置为指定颜色,未指定时则设为0。 gpu.drawPixel( x, y, 颜色 ) 在坐标x、y处绘制单个像素。 gpu.drawLine( x1, y1, x2, y2, 颜色 ) 在坐标x1、y1和x2、y2之间绘制一条线。 gpu.drawTriangle( x1, y1, x2, y2, x3, y3, 颜色 ) 在坐标x1、y1,x2、y2和x3、y3之间绘制一个填充三角形。 gpu.drawTriangleOutline( x1, y1, x2, y2, x3, y3, 颜色 ) 在坐标x1、y1,x2、y2和x3、y3之间绘制一个空心三角形。 gpu.drawBox( x1, y1, 宽度, 高度, 颜色 ) 在坐标x1、y1处绘制一个宽度为指定像素、高度为指定像素的填充矩形。 gpu.drawBoxOutline( x1, y1, 宽度, 高度, 颜色 ) 在坐标x1、y1处绘制一个宽度为指定像素、高度为指定像素的空心矩形。drawEllipse( x1, y1, width, height, color ) 在坐标x1、y1处绘制一个填充的椭圆(或圆形),宽度为width像素,高度为height像素。 gpu.drawEllipseOutline( x1, y1, x2, y2, x3, y3, color ) 在坐标x1、y1处绘制一个未填充的椭圆(或圆形),宽度为width像素,高度为height像素。 gpu.drawText( x, y, text ) 在坐标x、y处绘制字符串text。 gpu.measureText( text ) 返回字符串text的像素宽度和高度,不进行绘制。 gpu.newImage( width, height[, color] ) 创建一个宽度为width像素、高度为height像素的空白图像,用color颜色填充,若未指定颜色则默认为0。 gpu.loadTGA( stream ) 从输入输出流加载TGA文件,并返回创建的图像对象。流必须以rb模式打开,文件必须保存为索引颜色模式。以下代码将加载并绘制图像: local image = gpu.loadTGA( io.open( "image.tga", "rb" ) ) gpu.drawImage( 0, 0, image ) gpu.drawImage( x, y, image ) 在位置x,y处绘制图像image。 gpu.drawMap( x, y, map, tileset ) 使用tileset图像中的瓦片图像,将图像map作为瓦片地图绘制在位置x,y处。对于map中的每个像素,会提取颜色索引,并从tileset中绘制对应的瓦片图像,tileset应为16x16大小相等的瓦片图像网格。这对于创建游戏关卡很有用。 gpu.setTarget( image ) 将GPU目标设置为image,因此后续的绘制调用将写入此图像而不是显示器。调用gpu.setTarget( display.调用getImage()来重新定位显示。 gpu.setOffset(x, y) 使所有后续绘制调用在水平方向偏移x像素,垂直方向偏移y像素。调用gpu.setOffset(0, 0)可重置偏移。 gpu.mapColor(inColor, outColor) 使所有后续尝试绘制颜色inColor时,最终在GPU目标上绘制出outColor。调用gpu.mapColor(inColor, inColor)可重置映射。 gpu.setTransparentColor(color) 使所有后续尝试绘制颜色color(经重新映射后)时,目标像素保持不变。调用gpu.setTransparentColor(nil)可禁用透明度。 以下方法作用于GPU方法返回的图像对象: image:getSize() 返回图像的宽度和高度(以像素为单位)。image:read( x, y[, length] ) 若指定length参数,返回从坐标x,y开始的颜色值字符串;否则,返回该坐标处像素的颜色。 image:write( x, y, value ) 若value为字符串,将字符串中的字节从坐标x,y开始写入图像;若value为数字,则设置该坐标处像素的颜色。 image:flipX() image:flipY() image:rotate90() image:rotate180() image:rotate270() 对图像进行翻转或旋转操作。 image:copy() 返回图像的副本。 image:sub( x, y, width, height ) 返回表示图像子区域的新图像对象。 扬声器方法 标准机器人扬声器有2个音频通道,能够发出基本的音频波形。 speaker.

评论

共0条评论
face
inputImg
相关阅读
最新更新

图文攻略

《Redirection》关卡解法指南 简介 大家好, 这里是我为所有关卡提供的解法。 专业提示:按下CTRL + F键可搜索你正在寻找的关卡。 第一章 左手定…

2026-04-05 22:000赞 · 0评论

从零开始的扩展制作[2022/8/6更新]

本系列文章旨在让零基础用户了解如何参与SAO Utils 2的扩展制作 前言 SAO Utils 2(下文简称“SU2”)与之前的SAO Utils一样,可以通…

2026-02-14 10:000赞 · 0评论

《叛乱:沙漠风暴》1.20清晰视野行动 - 更新说明

《叛乱:沙漠风暴》1.20版本【清晰视野行动】更新内容 1.本次更新包含两款新瞄准镜、全新高难度挑战、模组编辑器优化以及为双方阵营新增的外观物品! 2.首先,来…

2026-02-24 16:070赞 · 0评论

技巧 甜瓜游乐场坦克教程

-

2025-09-27 20:080赞 · 0评论

如何创建自己的模组并发布到创意工坊?

在本指南中,你将了解如何轻松快速地加载你想要的角色头部。创建自己的模组。

2026-04-05 16:000赞 · 0评论

【版本预告】34.1.3版本即将更新!

【更新时间】

2026-01-20 05:3148赞 · 72评论

【V16.3.56】你可能错过的小更新!新增弹药、模组编辑器等

1. 界面与编辑器

2026-03-23 05:1612赞 · 0评论

绘画 鬼谷八荒九分钟制作一个动态立绘

2025-12-08 01:150赞 · 0评论

甜瓜游乐场 甜瓜游乐场20.24.1版本,将在1月12日10点更新

甜瓜游乐场20.24.1版本,将在1月12日10点更新

2025-09-23 19:230赞 · 0评论

《水果游乐场》0.2.4.2版本更新公告

新增内容:

2025-02-10 01:5345赞 · 45评论
暂无更多

最新更新

  • 创建自定义机器人街机游戏 — 《Redirection》机器人街机自定义游戏制作指南 入门 在游玩《Redirection》的过程中,你会解锁各种小型街机游戏,可在机器人街机中游玩——机器人…
  • 使用重定向关卡编辑器 — 《Redirection》关卡编辑器创建指南 创建你的第一个关卡 Redirection关卡编辑器可用于创建全新的Redirection谜题,使用的工具与开发主…
  • 图文攻略 — 《Redirection》关卡解法指南 简介 大家好, 这里是我为所有关卡提供的解法。 专业提示:按下CTRL + F键可搜索你正在寻找的关卡。 第一章 左手定…