斯普拉遁真的很鱿型!
尽管2代没有中文,但犹豫了很久之后还是没忍住入了卡带,果然对老任的想法没有任何抵抗力,涂地+FPS的设计真的是太好玩了!所以当老任公布Splatoon3的时候,毫无悬念入了数字版,准时开启了喷喷之路。
2代的时候就在广场上看到了很多有意思的涂鸦,既然作为一个手残画手,看了看已经吃灰的树莓派,只能靠科技的力量来润色自己的涂鸦了。
原理
斯普拉遁3的涂鸦可以看作一张320*120的单色位图图片,所以完全可以通过像素画工具先绘制出想要的图形,然后通过树莓派模拟的手柄逐行扫描进行绘制。
模拟手柄
从Github上看到了这个项目:Poohl/joycontrol,可以将树莓派通过蓝牙连接到Switch中模拟Pro手柄,并且作者提供了可编程式按键控制,所以利用「宏编程」用代码控制像素就可以做到自动涂鸦了!
位图
如果想自己尝试绘画,这里有两个像素画的制作工具:
the Pixel Art
Pixel Studio APP
再通过PhotoShop导出PNG8的「黑-白」图片,这时候会自动转换成单色的PNG图片,最后通过PNG2BMP工具转成位图.bmp文件就可以使用了。
本次的主题是新世纪福音战士风格涂鸦:Wave1,开大,不违法!😤
准备工具
Nintendo Switch 一台
树莓派3B及以上(需要Python3环境)
绘画
要确保Switch处于掌机模式(JoyCon需要插在主机上),连接充电线。进入手柄页面,选择「更改握法/顺序」。
配对手柄
进入joycontrol目录,先手动配对手柄获取到Switch的蓝牙MAC地址:
# 连接Switch
sudo python3 run_controller_cli.py PRO_CONTROLLER
此时应该显示一个黑色的Pro手柄ICON:
如果蓝牙不能正常的连接,可能需要修改树莓派蓝牙的配置文件:
sudo vim /lib/systemd/system/bluetooth.service
# 修改ExecStart
ExecStart=/usr/libexec/bluetooth/bluetoothd -C -P sap,input,avrcp
# 重启bluetooth.service
sudo systemctl daemon-reload
sudo systemctl restart bluetooth.service
或者在这个issue中寻找帮助:Cursed Bluetooth Hardware #4
连接正常后,通过bluetoothctl命令获取到主机的MAC地址:
bluetoothctl paired-devices | grep -F "Nintendo Switch" | grep -oE "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}"
导入位图
将位图图片重命名为test.bmp放在joycontrol目录,通过Image模块获取:
img = Image.open('./test.bmp')
print("Load image success!")
WIDTH, HEIGHT = img.size
print ("Image Width:" + str(WIDTH) + ", Height:" + str(HEIGHT))
最后就可以遍历图片的像素来控制是否使用铅笔或者橡皮了:
for h in range(HEIGHT):
print ('Draw row:' + str(h))
for w in range(WIDTH):
p = w if h % 2 == 0 else WIDTH - w - 1
color = img.getpixel((p, h))
direct = 'right' if h % 2 == 0 else 'left'
# black
if color == 0:
await button_push(controller_state, 'a')
await button_push(controller_state, direct)
# white
else:
await button_push(controller_state, 'b')
await button_push(controller_state, direct)
await button_push(controller_state, 'down')
完整的代码在Gist:
liopoos/splatoon-tool.py
开始涂鸦
准备好手柄和图片后就可以开始涂鸦了:
进入游戏的绘画界面(在邮筒📮的地方)
退出到主页面开始执行脚本,需要替换reconnect_bt的地址
配对好手柄后,返回绘画界面中,将光标移动到左上角
按L键选择最细的画笔,按下X键放大画布
在脚本处输入yes确认
等待绘画
大概需要2个多小时,中间一定要确保电量充足和网络正常,中间有次断网喷喷强制掉线导致失败了😠,最终的成品:
点击发布就可以大功告成了!👍🏻
最后
贴一下最近的游戏截图: