今天跟大家唠唠我最近捣鼓的“面对面游戏世界”这个项目,纯粹是自己兴趣,想搞点好玩的。
我就寻思着,现在手机游戏虽然多,但总觉得少点少那种面对面一起玩的热闹劲儿。我就琢磨着能不能自己做一个,让大家能在线下,面对面,一起开心地玩游戏。
说干就干!
1. 我得选个简单的游戏类型。那些大型3D游戏,一个人搞不定。我决定从最经典的象棋入手。规则简单,大家都会玩,而且变化也多。
2. 然后,就开始琢磨技术方案。我用的是Unity,因为之前用它做过一些小项目,比较熟悉。
先搭个简单的棋盘界面,用UGUI做的,拖拖拽拽,还算方便。
就是棋子的移动逻辑。这个稍微麻烦点,要判断能不能走,有没有被将军啥的,写一堆if else。
3. 最关键的来,怎么实现“面对面”?我没用服务器,也没搞网络同步。而是用一个很“土”的办法:
两个手机,一个当“服务器”,一个当“客户端”。
“服务器”手机负责显示整个棋盘和棋子的状态,以及判断游戏规则。
“客户端”手机只显示当前玩家的操作界面,点击棋子后,把操作发送给“服务器”。
“服务器”收到操作后,更新棋盘状态,再把整个棋盘画面截图,发送给“客户端”显示。
“客户端”收到截图后,直接显示出来,就好像在看一张照片。
4. 是不是觉得很傻?但没办法,我一个人搞,只能用这种最简单粗暴的方式。好处是,延迟很低,基本感觉不到。
5. 为让“客户端”能把操作发送给“服务器”,我用二维码。
“服务器”每一步操作后,生成一个包含棋盘状态和下一步允许操作的二维码。
“客户端”用摄像头扫描二维码,解析出信息,就知道下一步该怎么走。
6. 代码写得那叫一个乱,各种临时变量,各种全局变量,自己都看不下去。但能跑就行,先凑合着用。
7. 做好之后,拉着朋友测试。
一开始各种bug,棋子乱飞,走错规则,闪退。
改一晚上,总算能正常玩。
朋友说,虽然画面简陋,操作也有点麻烦,但确实挺有意思的。
虽然这个“面对面游戏世界”还很粗糙,但至少实现我的想法。以后有时间,可以再优化一下,比如:
美化一下界面,现在的太丑。
优化一下代码结构,现在的太乱。
加一些动画效果,现在的太生硬。
这回实践让我体会到,即使一个人,也能做出一些有意思的东西。关键是要动手去做,不要怕麻烦,不要怕失败。说不定,下一个爆款游戏,就是你做的!