本项目免费开源, 源码可通过太极创客GitHub获取
github.com/taichi-maker/ESP8266_Multiplayer_Pong
项目开发制作:小黑(BlackBox114)
项目图文/本文编辑:本布衣
Pong是1972年雅达利推出的一款投币式街机游戏,它常被人们认为是电子游戏历史上的第一款街机游戏。该游戏机一经投入市场就引起了轰动,它为母公司雅达利带来了丰厚的收入和闪亮的荣誉。
关于Pong和它的母公司雅达利,有很多传奇故事可以讲一讲。比如当年Pong游戏如此受欢迎,雅达利如此火热。乔布斯还曾经慕名来到雅达利公司任职。这可是乔姥爷的第一份工作,可以看到那时的他还很青涩。
在雅达利上班期间,乔布斯萌生了创建苹果公司的念头。正是Pong游戏的开发者Allan Alcorn帮助乔布斯开立了苹果公司的第一个商业账户。
如今很多国外玩家依然对它抱有深深的感情。比如2019年在美国知名众筹网站KickStarter上有一款嵌入Pong游戏的咖啡桌产品,获得了33.5万美元的众筹款项。
随便网上一搜,就能找到各种围绕这款游戏的周边。
现在,还有很多朋友在各种平台上复刻这款将近50岁的经典游戏,我们太极创客的小黑也是其中一员。但不同的是,小黑将Pong上升到了网络高度。他利用ESP8266物联网开发板实现了可无线联网对战的Pong。
联机对战需要两台设备,两块8266开发板之间需要通过wifi进行连接。其中开启AP模式的是master机,开启STA模式的是slave机。游戏过程中,两台机子之间通过UDP协议传输己方球拍的位置数据,同时接受对方球拍的位置数据,以此达到数据同步的联机游戏效果。
若对8266的AP模式和STA模式有疑问,请参阅太极创客官网关于ESP8266-Arduino库资料。若不了解UDP协议在本游戏中的具体应用,可以参阅太极创客官网关于UDP协议资料。
材料清单
连线图
https://github.com/taichi-maker/ESP8266_Multiplayer_Pong
-
Adafruit_GFX库 -
Adafruit_SSD1306库
如果您对ESP8266-NodeMCU有任何问题,或者不知道如何导入第三方库,以及烧录代码到ESP8266,可访问太极创客官网搜索相关资料。
操作说明
Step01 代码正常烧录后,主机和从机接通电源,会显示初始界面
Step02 按照oled显示的说明,按下任意按键可以进入wifi连接状态。此时主机和从机开始尝试进行连接。
Step03 wifi连接完成后,oled会提示,当玩家准备好开始游戏后按下按键。
Step04 当双方均按下按键时,游戏正式开始。两个按键代表上下移动球拍,一旦一方没有接住球,另一方就会增加一分,游戏将持续进行。
您如果进行了游戏,可以看到,双方传输数据其实是有一定延迟的。而且除了球拍的位置数据互相传输以外,其实没有其他数据交互。相当于一旦因为延迟出现误差,主机和从机会出现不同步的游戏局面。这一点可通过增加球位置校验等方法解决,也可以通过进一步优化代码来解决。您可以尝试修改或升级这个简单的游戏,解决这些小瑕疵。我们也会继续优化代码,以追求更优的效果。