目录
版本1.0.0介绍(Version 1.0.0 Introduction)
哲学观点 #1(Philosophical Viewpoint #1)
哲学观点 #2(Philosophical Viewpoint #2)
为什么做这个游戏?(Why create this game?)
这个游戏在哪里发生?(Where does the game take place?)
我有几个角色可以选择?(How many characters do I control?)
主要目的是什么?(What is the main focus?)
与同类游戏有什么不同?(What’s different?)
用户界面描述 #1(User Interface Detail #1)
用户界面描述 #2(User Interface Detail #2)
音乐总谱和声音效果(Musical Scores and Sound Effects)
单人游戏模式描述(Single Player Game Detail)
世界编辑描述 #1(World Editing Detail #1)
世界编辑描述 #2(World Editing Detail #2)
“连连看 附录”(“Link Link Game Appendix”)
连 连 看(Link Link Game)
一个简约&精致的小游戏
All work Copyright ©2023 by guiyi
作者: hyf
版本 # 1.0.0
Thursday, June 8, 2023
体验安装包链接(Experience Link)
Link Link Game —— 安装包.zip - 蓝奏云
游戏展示视频(Display Video)
【深圳大学计算机游戏开发】期末大作业 连连看Link Link Game(cocos2d)
设计历程(Design Process)
这个小游戏是计算机游戏开发的期末大作业,游戏的名字为——连连看,英文名我选择了Link Link Game,最终完成于2023.06。游戏通过选择精致优美的图片和音乐,以打造一个轻松舒适的游戏氛围,使玩家在游戏中愉悦和满足。
版本1.0.0介绍(Version 1.0.0 Introduction)
1.0.0版本不但包括了基本的连连看玩法,比如一定条件下的相同图块相消并得分、得分显示、剩余时间显示、关卡显示、暂停功能、提示功能等等,还有一些其他的功能。
首先,主菜单包含6个按钮,“开始游戏”、“最高分”、“更换背景”、“退出”,以及右上角的开关音乐和疑问按钮。
点击“开始游戏”按钮后,会进入关卡选择界面,该版本总共有9个关卡,难度依次递增,点击关卡后即可进入游戏。当通过该关卡时,可以点击下一关按钮开始更高难度的游戏。当第9关通关时,点击下一关按钮会进入最高分界面。
点击“最高分”按钮时,会进入成绩记录界面,该界面会记录每一关的最高得分,点击“清空”按钮会将记录的最高分清零。
点击“更换背景”按钮后,会进入背景更换界面,该版本提供了30+可供选择的不同风格的背景,点击“上一张”和“下一张”按钮即可切换壁纸,点击“隐藏5秒”按钮会隐藏所有按钮5秒,以便玩家更好的欣赏壁纸和选择。
点击“退出”按钮,会结束游戏并关闭界面。
点击右上角音乐图标,可以切换音乐音效的开关状态。
点击右上角问号图标,可以了解游戏玩法、得分规则、游戏声明、关于游戏、support等信息。
游戏概述(Game Overview)
哲学(Philosophy)
哲学观点 #1(Philosophical Viewpoint #1)
为什么一个简单的小游戏,仅仅是消除相同图块的小游戏,却能风靡如此久的时间?
哲学观点 #2(Philosophical Viewpoint #2)
不断点击相同图块消除,是否真能让人们上瘾并深陷其中?
基本问题(Common Questions)
这个游戏是什么?(What is the game?)
这是一个简单经典的连连看小游戏,玩家通过点击满足条件的相同图块进行消除。
为什么做这个游戏?(Why create this game?)
首先是因为连连看类型的小游戏风靡许久但仍有众多玩家喜爱,其次是因为当今时代人们的压力越来越多,而一款轻松舒适的、可以解压的小游戏必定能收到不少人的喜爱。
这个游戏在哪里发生?(Where does the game take place?)
这个游戏发生在当代,生活节奏快、生活压力大的当代,人们或许没有更多的精力和时间去玩一款大型且繁多设定的游戏,或许会更青睐一款解压休闲的小游戏,像连连看这样的解压舒适小游戏。
我要操作什么?(What do I control?)
玩家只需要点击相同的图块,如满足要求则能消除并获得分数。
我有几个角色可以选择?(How many characters do I control?)
这不是一款以角色为主题的游戏,因此并没有供玩家选择的角色。但是,该游戏有30+背景可供玩家选择,不同风格不同色彩不同款式的背景,总有一款能让玩家爱上。
主要目的是什么?(What is the main focus?)
从游戏的角度来说,主要的目的是为了消除相同图块以获得更高分数。但是,从玩家的角度来说,主要的目的还是为了解压和舒适,在精美的图片、优雅的音乐、简单的玩法、令人上瘾的游戏体验中获得愉悦和满足。
与同类游戏有什么不同?(What’s different?)
我们提供了更多可供选择的背景以及精挑细选后选中的精致音乐音效,并且,我们还做出了详细的玩法说明和得分说明,以方便不太了解该类游戏的玩家迅速上手。
特色设置(Feature Set)
特色概述(General Features)
舒适的音乐
愉悦的音效
精美的图片
精致的UI设计
简洁易懂的玩法说明
令人上瘾的游戏体验
30+供选择的精美壁纸
联网特色(Multiplayer Features)
双人玩家共同消除
1v1竞速消除
1v1竞分消除
编辑器(Editor)
Cocos2d-x-3.17.2
PS2021
游戏性(Gameplay)
消除图块时的愉悦、满足
令人舒适的精致音乐、音效
优美的背景图片
令人上瘾的游戏体验
挑战刷新最高分的热血
游戏世界(The Game World)
概述(Overview)
点击“开始游戏”后,选择自己心仪的关卡进入游戏界面,通过消除相同的图块获得分数,若关卡结束后得分高于当前最高分,则进行记录更新。
世界特色(World Features)
图块类型数量20+,不会因重复而感到乏味。
背景图片数量30+,选择心仪的背景游玩更为愉悦。
音乐音效优美,玩家游玩舒适愉悦。
不断 消除图块,令玩家愉悦和满足。
物质世界(The Physical World)
概述(Overview)
包括各式各样的图块,总计数量20+。
关键场所(Key Locations)
由众多图块随机排列构成的总体。
游历(Travel)
玩家点击一个图块后接着点击另一个图块,若满足条件则可以消除。
若为相邻消除,则+10分。
若为直线消除,则+20分。
若为单直角消除,则+30分。
若为双直角消除,则+40分。
若使用提示功能,则下一次消除不得分。
缩放比例(Scale)
现实中一个苹果高大约7cm,而游戏中的苹果高大约1.6cm,缩放比例为4.375:1。
对象(Objects)
不同的可消除图块、不同的背景图案。
气候(Weather)
玩家可以通过选取不同的背景图案来选取不同的气候。
白天和黑夜(Day and Night)
玩家可以通过选取不同的背景图案来选取白天或者黑夜,换而言之,即亮背景和暗背景。
时间(Time)
不同的关卡所设计的时间均不同,当时间耗尽时游戏也会结束。
渲染系统(Rendering System)
概述(Overview)
采用cocos2d-x游戏引擎,由引擎内部实现。
2D/3D 渲染(2D/3D Rendering)
采用cocos2d-x游戏引擎,由引擎内部实现。
视角(Camera)
概述(Overview)
采用第三人称视角,玩家以第三人称视角完成点击消除操作。
视角描述(Camera Detail)
如图所示,玩家为第三人称视角。
游戏引擎(Game Engine)
概述(Overview)
采用Cocos2d-x游戏引擎。
游戏引擎描述(Game Engine Detail)
Cocos2d-x游戏引擎在内部实现渲染,播放音乐等底层逻辑。
碰撞检测(Collision Detection)
Cocos2d-x有着很好的检测功能以实现边界检测,确保游戏画面位于可显示范围内。
照明模式(Lighting Models)
概述(Overview)
玩家通过选择不同的背景图案,以达到切换明亮模式的效果。
照明模式描述(Lighting Model Detail)
背景图案数量30+且涵盖各种色系,能够满足玩家各种需求。
世界规划(The World Layout)
概述(Overview)
包含许多图块、背景图片以及优美的音乐音效。
世界规划描述(World Layout Detail)
主打一个精致舒适,让玩家获得愉悦和满足。因此,图块的样式和展现,尽量做到精致舒适;而背景图案的选取,也做到量多且质高;另外,音乐和音效也要恰当舒适。
游戏角色(Game Characters)
概述(Overview)
该游戏中的角色,准确的说是背景图案,量多且质高。
创建角色(Creating a Character)
玩家在主菜单点击“更换背景”即可选择自己心仪的背景图案。
敌人和怪物(Enemies and Monsters)
换而言之,即是消除图块。玩家通过点击相同的图块进行消除,以此获得更高的分数。
用户界面(User Interface)
概述(Overview)
主菜单包含6个按钮,“开始游戏”、“最高分”、“更换背景”、“退出”,以及右上角的开关音乐和疑问按钮。关卡选择包括9大关卡。最高分界面记录各大关卡最高得分。更换背景界面可以更换自己心仪的背景。
用户界面描述 #1(User Interface Detail #1)
更换背景界面可以选择自己心仪的背景,并且,可供选择的背景数量30+,涵盖各种风格和色系。
用户界面描述 #2(User Interface Detail #2)
玩家选择关卡后进入游戏界面后示例如下。
武器(Weapons)
概述(Overview)
玩家通过在屏幕上直接点击图块进行选取。
武器描述(Weapons Details)
当玩家点击的两个图块相同,且连接路径不超过三根直线,即可成功消除。
音乐总谱和声音效果(Musical Scores and Sound Effects)
概述(Overview)
为了达到舒适轻松的解压效果,因此我们经过精挑细选后才确定了合适优美的音乐音效。
音乐音效设计(Sound Design)
我们为主界面选取了轻松的音乐作为BGM,为游戏界面选取了欢快愉悦的音乐作为BGM,为最高分界面选取了让人感到荣誉感的音乐作为BGM。
我们为点击按钮的动作选取了舒适的点击音效,为游戏界面最后3秒选取了倒计时音效,为通关成功选取了欢快的音效。
单人游戏模式(Single-Player Game)
概述(Overview)
点击“开始游戏”按钮后,选择关卡进入游戏,消除图块以通关。
单人游戏模式描述(Single Player Game Detail)
消除满足条件的相同图块进行消除
故事(Story)
主要的目的还是为给予玩家轻松舒适的氛围,因此,便一次次的选取音乐音效和图片,一次次的排除,最终,确定了最终的方案。
游戏时间(Hours of Gameplay)
每个关卡的游戏时间均不同,因为图块的数量不同。但是,总的来说,时间并不会太长。
胜利条件(Victory Conditions)
消除所有图块即可通过当前关卡。
多人游戏模式(Multiplayer Game)
概述(Overview)
多个玩家联机体验模式,可以设计多种模式,如双人共同消除模式、、多人竞速模式、多人竞分模式等等。
最大玩家数(Max Players)
这个应该要看是什么模式而决定,若设计的是双人共同消除模式,则上限人数为2人;若设计的是多人竞速模式或者多人竞分模式,则可以更多,理论上无上限,但是我觉得5人左右最为合适。
持续(Persistence)
因为该游戏是为了解压而设计的,人们不可能会永远没有压力,因此,总会有人玩这款游戏的。另外,可以不断开发新模式以提高游戏人气。
存档和读档(Saving and Loading)
仅会保存每一关和每个模式的最高得分,如果可以的话,还可以保存每一次游戏获得的分数以及联机玩家信息,以便下一次再次联机。
世界编辑(World Editing)
概述(Overview)
利用PS2021工具和网上资源编辑设计图块、背景图案、UI图片等等。
世界编辑描述 #1(World Editing Detail #1)
设计出了精美的图块,如图所示。
世界编辑描述 #2(World Editing Detail #2)
设计出了精美的背景图案,如图所示。
“连连看 附录”(“Link Link Game Appendix”)
在附录中,我将会说明设计该小游戏历程的和实现小游戏的部分代码示例。
“设计历程”( “Design Process”)
在设计连连看小游戏的开始,想的便是实现最基本的游戏功能——点击相同图块消除,紧接着,还要配置上时间限制,得分显示,关卡显示等基本面板。
然后,更进一步地,开发提示功能,添加暂停功能。
到此,游戏界面的设置基本完成,因为主打的是一个简约舒适,因此,我不打算再在游戏界面添加更多的按钮和显示。因为,我觉得那样反倒会适得其反,让人眼花缭乱。
接着,我需要设计一个主菜单,主菜单首先需要选取一个背景图,以及“连连看”三个字的logo设计,还有“开始游戏”按钮,“退出”按钮。
为了让玩家有游玩过游戏的感觉,我还添加了“最高分”按钮,并且本地存储玩家所获得的最高得分,这样,在下一次启动时,之前的得分仍然存在。
到此,主菜单的初步设计完成。
为了让游戏更具有可玩性,我觉得应该设置一个梯度难度。因此,关卡界面诞生了,我根据不同图块数量和时间设计了九大关卡。刚开始,我在想,是否要锁住关卡,让玩家一关一关的解锁。
但是,我又想,假设前5关对于某些人来说毫无难度,但是为了玩到适合的难度,却仍要先去玩前5关。似乎有点浪费时间和心里不舒服。
因此,最终我决定将选择权交给玩家,让玩家自由选择关卡。从另一个角度来看,最高分的界面的存在,同样使得锁住关卡可有可无。那么,我设计的不是闯关模式,而是最高分模式。
到此,关卡选择界面设计完成。
接下来则是选择音乐音效,经过精挑细选,最终确定了最终的音乐音效。不同的场景有不同的BGM。按钮点击时也绑定了合适的音效,通关和倒计时也设置了合适的音效。
既然有了音乐和音效,那么开关也是不可缺少的,因此,我在主界面的右上角设置了开关音乐按钮,点击按钮会开关音乐音效状态,并且,按钮图片也会变化。
到此,音乐音效设计完成。
为了让玩家更好地上手游戏,我决定添加简要的玩法说明。其实一开始时,我是不打算设置的,毕竟连连看这款游戏经典且经典,人们应该都玩过。但是转念一想,哪怕是只为了极少部分没玩过这类游戏的玩家,我都有必要添加一下说明。
因此,我在主界面右上角添加了一个问号按钮,玩家点击后可以进入界面查看玩法说明。
然后,我想,竟然添加了玩法说明后,那不如添加的更多一些。于是,我在该界面创建了滚动条并设置了容器,玩家可以向下滑动界面查看信息,包括玩法说明、得分规则、游戏声明、关于游戏、support等信息。
到此,疑问界面设计完成。
在选取游戏背景的时候,我曾遇到一个难题——我遇到了两个我觉得都不错的背景,我很犹豫到底选取哪一个作为游戏背景。后来,我释然了,因为我转念一想,玩游戏的是玩家,而且,每个人的审美不同,那么,为什么不把选择权交给玩家呢?
因此,我在主界面添加了“更换背景”按钮,玩家点击后可以进入界面选取心仪的背景。
我想,既然都做到这一步了,那么可供选择的背景的种类和数量就应该尽量多。毕竟,总不能让玩家挑了一圈后都没有选到心仪的背景吧。因此,我精挑细选了30+各种风格和色系的背景图案供玩家选择。
为了让玩家更好地分析背景,我还设置了“隐藏5秒”按钮,点击后会隐藏所有按钮5秒,以便玩家更好地观赏背景图案。
到此,更换背景界面设计完成。
其实到这里小游戏便已经设计完了,但是我有一天突发奇想,安装包是怎么做的呢?毕竟很多软件都是通过安装包来安装的,而不是移植整个文件。
经过查阅资料后,我首先将VS2019切换为release版本运行,然后利用Inno Setup编译器将release后的文件夹打包成安装包。经过发给别人尝试后,确认是可以正常安装和运行游戏的。
到此,安装包设计完成。
设计完安装包并发给别人后我发现一个问题,那就是安装后的目录下的Resources文件夹,点开后可以看到所有的资源文件。
换而言之,我的资源文件没有保密性。因此,我觉得有必要开发一个加解密功能。
起初,我是打算使用网络安全课程学到的AES算法进行加解密,但是我发现,如果使用AES的话,实现起来较为烦琐,并且可能会影响游戏响应速度。
另外就是,我觉得保密性没必要这么高,毕竟只是一个小游戏。而且,只需要设计一个简单的加密算法,哪怕并不安全,但也可以防住百分之九十九的人了。
最后,我决定采用简单的异或前五位方法进行加解密。当玩家不知道加解密方法时,还是具有一定的安全性的。
到此,加解密部分设计完成
至此,连连看(Link Link Game)1.0.0版本的设计便已完成,若之后有时间的话,我会考虑升级更高版本的。
“代码展示”(“Code Display”)
1. Background
用来切换壁纸和控制音乐总开关。
2. ChangePhoto
更换壁纸界面,主界面点击“更换壁纸”后会进入该界面。
3. ChessBoard
棋盘的实现部分
4. ChessPiece
棋子的实现部分
5. GameFinishScene
结束一局游戏后的界面实现
6. GamePauseScene
暂停游戏时的界面实现
7. GameScene
游戏界面的实现部分
8. GameScoreScene
最高分界面的实现
9. GameUtils
记录玩家数据部分的实现
10. LevelSelectBtn
关卡选择界面按钮设置部分
11. LevelSelectScene
关卡选择界面实现
12. MenuScene
主界面实现
13. Protect
加解密部分实现
14. QuestionScene
疑问部分实现
15. TimesupScene
时间耗尽后界面实现
个人感言(Personal Reflections)
当初做这个小游戏的时候还是花费了不少时间和精力的,毕竟期末比较忙,而且另一个组员是完全开摆的那种,什么事都不干。所有的所有,都是由我自己完成的。在pre前一周真的是在狂赶进度,有一次debug直接通宵(所以睡觉前最好别debug……)。
好在最终还是完成了这个小游戏的设计和简单优化,大体上我还是比较满意的。最终pre也取得了不错的效果,拿了个a+。这门课还是挺有意思的,是我觉得最有趣的选修课。
(by 归忆)