Skip to content

A 2D PuZzle Game for Chinese Computer Design Compitition in 2022

Notifications You must be signed in to change notification settings

Jasper-JZH/WenZi-2DPuZzleGame-Unity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

“文”字【中国大学生计算机设计大赛数字媒体赛道参赛作品】

目录

Table of contents generated with markdown-toc

需求分析

汉语言文化是中华文化中最重要的一枚瑰宝。正是有了汉字,我们炎黄子孙才有信息表达和记录的工具,才能有文明的传承,有中华上下五千年的文化。为了继续传承和发扬中华汉语言文化,我们每个人都应做到“学汉语用汉字,弘扬汉语言文化”,该游戏正是基于这一主旨而设计创作出来的。

我们对比查询了已有的与以文字为核心的游戏,我们注意到其主要分为两类,一类是以普及汉字知识为主的展示类作品,一类是以文字作为主要角色的的作品。因此我们决定将两类作品的优点进行结合。让玩家在直观的认识汉字字形的同时,又能学习到汉字的内涵。所以该作品以汉字作为游戏的核心,整体游戏流程按照“遇字-说字-解字-用字”展开。让玩家对汉字的认识从单一的字,扩展到其相关的古籍、诗句,最后结合具体的游戏机制生动诠释字的蕴意,加深玩家对汉字及其背后文化的理解。

概要设计

一、游戏整体流程设计

游戏设计为闯关制度,玩家启动游戏并观看完开头动画CG后,会进入游戏的主菜单界面,随后玩家可以点击开始游戏进入第一关。玩家通过当前关卡后将自动进入下一关,直到玩家通过所有关卡。

在游戏的过程中可随时暂停返回主菜单,系统将自动保存玩家关卡进度,再次按开始游戏时会根据上次退出时的进度加载关卡。

【图1】游戏整体流程设计图

二、游戏总体功能设计

确定游戏的整体流程和核心功能模块后,我们最游戏的总体功能进行如下设计:

【图2】游戏总体功能设计图

详细设计

一、界面设计

  • 开头动画界面

【图3】开头动画CG界面图1

【图4】开头动画CG界面图2

  • 主菜单界面

【图5】游戏主菜单界面图

  • 设置界面

【图6】音量设置界面图

  • 开发者界面

(隐私问题隐藏)

【图7】开发者信息界面图

  • 场景加载界面

【图8】场景加载界面图

  • 过场动画界面

【图9】过场动画界面图

  • 对话及答题界面

【图10】与NPC对话界面图

【图11】答题界面图

  • 书写界面

【图12】书写界面图1

【图13】书写界面图2

  • 部分关卡界面

【图14】关卡界面图1

【图15】关卡界面图2

【图16】关卡界面图3

【图17】关卡界面图4

【图18】关卡界面图5

二、游戏详细流程设计

  1. 播放动画CG后进入游戏主菜单界面

    在进入游戏后,首先会播放一段动画CG,以两首与汉字有关、赞美汉字的诗作为引入,以彩墨画描绘的乡村生活作为背景,过渡到玩家所扮演的举人身上,又以举人书案上的纸笔作结,过渡到游戏主菜单界面。

  2. 点击开始游戏进入关卡

    点击主菜单界面开始游戏的按钮后程序会读取存档加载对应的关卡,第一次游玩默认从第一关开始。

    (1)第一关

    进入第一关后首先会播放一个过场动画,随后玩家可与场景中的“师”和“火”NPC对话,了解游戏的操作说明和主要玩法。玩家书写“火”字产生火焰,烧毁阻拦的树后进入下一关。

    (2)第二关

    进入第二关后,玩家可与木,随后在半空中书写“木”生成木板防止跌落,在瀑布处按“E”进入小关卡,随后用木板浮渡湖遇到右边的“水”。离开后用水灭火,随后用火点亮火台触发机关。

    (3)第三关

    进入第三关后,玩家与土对话,书写“土”,站在土上写木种下树苗,为树苗浇水后树会长大。随后玩家跳跃到红色云台上,想办法与 “烟”对话。获得烟的能力后,玩家可以先写 “火”再写“烟”引发爆炸炸开石头,最后到达右侧红色云台即可进入下一关。

    (4)第四关

    进入第四关之后,玩家炸开巨石后与“金”对话,生成金元宝压住石台通过机关。在与“坎”对话获得能力后,可用“坎”炸开特殊地板进入下一关。

    (5)第五关

    进入第五关后,玩家在遇到“辰”字前可书写“火”短暂照明。随后一路躲避落石遇到“坤”后,玩家可书写“坤”形成浮空平台度过断崖。遇到“震”后,在龙凤交汇处书写“震”可引来闪电击碎山石,触发机关后向右走遇到“巽”,在悬崖边书写“巽”形成风场升空过关。

    (6)第六关

    进入第六关后,玩家跳到旁边的云朵上,书写“巽”形成风场,飞到上方与“飞”对话后,玩家可在本关按住空格飞行。在到达彩色云朵处降落之后通关。

    (7)第七关

    进入第七关后,乘船到达湖中的亭子与“云”对话,随后生成一朵云飞到空中与“雨”对话,玩家在云上书写“雨”字后会在云朵下方引发降雨。随后玩家利用雨水扑灭右侧着火的木船,并跳到船上即可进入下一关。

    (8)第八关

    此关为最终关卡,交代整个故事情节后玩家通关,返回主菜单。

  3. 暂停游戏返回主菜单界面

    在游戏过程中玩家可以按下ESC键打开暂停菜单,返回主菜单界面。程序将自动保存玩家的关卡进度,再次开始游戏时将进入存档关卡。

三、功能模块详细设计

  1. 游戏管理

    (1)数据管理

【图19】数据管理设计图

(2)音频管理

【图20】音频管理设计图

  1. 功能系统

(1)对话系统

【图21】对话系统设计图

(2)书写系统

【图22】书写系统设计图

(3)实物功能

【图23】实物功能设计图

  1. 控制器

    (1)场景控制

【图24】场景控制设计图

(2)状态控制

【图25】状态控制设计图

四、关键技术

  • 基于点云识别的笔迹检测
  1. 需求分析

    在实现游戏的核心玩法时,我们想要程序能够识别玩家在屏幕上用笔刷书写的汉字,并在识别后与目标模板汉字进行匹配并计算出匹配程度,即玩家书写的准确性。

    为了实现这一功能,我们首先想到的就是对屏幕上绘制的连续的笔迹采样,生成一个二维空间中离散的点集。但直接采样得到的点集如果未进行预处理,就无法很好地应对玩家将字写的过小或过大等导致采样点集出现假误差的状况。

  2. 解决方案

    针对上述提到的问题,我们在网络上查找了相关资料,最终发现《Gesture as Point Clouds : A $P Recognizer for User Interface Prototypes》一文中提出了一种基于点云识别地笔迹识别算法,并提供了一种对采样点集预处理的方案。结合该文献中提出的方法,我们提出了一套解决方案。

    (1)对连续笔迹采样得到离散点集

    该算法对于连续笔迹的处理方式与我们一开始采用的方式相同,即将连续笔画采样成离散的点集,从而避开书写时笔画的顺序、数量对书写结果比较的影响。由于Untiy引擎中线段的绘制本身就是用大量连续的点相连得到,所以我们可以获取组成笔迹的每一个点。

【图26】文献中连续笔迹处理方案示意图

(2)对离散点集进行预处理

由于玩家每次书写的笔迹大小、长度和位置的差异会带来原始的采样点集大小和中心点的较大差距,因此我们需要对所有的原始采样点进行3步的预处理。

①缩放点集到[1,1]大小平面空间

由于玩家每次书写的笔迹大小、长度和位置的差异会带来原始的采样点集大小和中心点的较大差距,因此我们首先算出点集整体的 “长”和“宽”,并按照长宽分别缩放每个点的坐标,使所有点保持在[1,1]大小平面空间中。

【图27】预处理第①步算法伪代码

②平移点集到坐标系原点

为了方便后续的计算,我们计算出缩放后点集的中心,并将点集中心点偏移到原点,使点集中心处在平面坐标系的原点。

【图28】预处理第②步算法伪代码

③重采样得到新点集

为了后续匹配度的计算,我们需要规定参与计算的采样点的数量来统一所有笔迹的点数。对于缩放、中心化后的点集。首先算出点与点连成的笔迹的总长度,再根据所需重采样点数确定新采样点集的采样距离跨度,最后根据该采样跨度对原点集重采样得到新点集。

【图29】预处理第③步算法伪代码

(3)匹配值计算

求出预处理后的点集与我们准备好的模板点集之间的最近点距和。当距离和小于设定的目标值时,判定识别成功。在计算点距时还可以加上对不同点权重的考虑。

【图30】点距计算示意图

【图31】点距计算算法伪代码

测试报告

  1. 数据管理测试

    **测试方案:**检测游戏存档是否正常更新保存,退出程序再次进入时是否留有关卡进度。

    **测试结果:**游戏存档功能正常,达到预期。

  2. 音频管理测试

    **测试方案:**检测游戏背景音乐和特殊音效播放是否正常,音量设置功能是否有效。

    **测试结果:**可正常设置调节背景音乐和游戏音效的音量大小,且播放正常,达到预期。

  3. 对话系统测试

    **测试方案:**与场景中所有NPC发起对话,模拟对话中玩家可能的所有操作。检测答题功能是否正常运作,对话系统与其它模块的衔接是否正常。

    **测试结果:**对话内容无误切可正常对话,题目加载正确,选择题判断无误,衔接正常,达到预期。

  4. 书写系统测试

    **测试方案:**检测所有字的书写与匹配是否正常,切换字帖,增加新字帖是否顺畅。

    **测试结果:**写字及识别效果良好,玩家在游戏中频繁开启书写系统也可正常流畅运行,达到预期。

  5. 实物功能测试

    **测试方案:**在游戏中生成各种实物并与对应场景中的机关进行交互测试。

    **测试结果:**各实物在场景中的生成和交互基本符合游戏需求,各场景机关可与实物正常交互,部分场景中的实物存在少数画面上的缺陷,部分实物与实物之间的交互和联动性有待提高。

  6. 场景控制测试

    **测试方案:**频繁在各个场景之间切换,检测场景控制器运作是否正常。

    **测试结果:**可流畅加载所有关卡,场景的切换过渡流畅自然。

  7. 状态控制测试

    **测试方案:**在游戏过程中多次暂停后继续游戏,返回主菜单后重新开始游戏

    **测试结果:**游戏各状态切换正常且流畅,达到预期。

项目总结

在项目初期,围绕着“学汉语用汉字,弘扬汉语言文化”,我们定下了“文字”与“解密”这两大要素,随后围绕着这两大要素进行构思。首先,我们总结了现今已有的文字类游戏和解密类游戏,分析了其各自具有的优缺点。首先,文字类游戏基本以内容展示、知识普及为主,而解密类游戏又不多涉及文字,哪怕涉及也只是将文字作为NPC出现,并没有过多的涉及到文字的内核。

故我们打算将汉语言文化与解密游戏相结合,将知识的普及融合进游戏玩法中,达到寓教于乐的目的。由此,我们定下了我们的主要游戏机制“遇字-说字-解字-用字”。定下了主要机制之后,我们开始围绕着这个机制开始构思游戏主要内容及其功能,同时进行文献与汉字有关古籍参考。最终,我们定下了以文字作为NPC以达到“遇字”,引入古籍《说文解字》中对游戏中出现汉字的解释,对汉字进行联想诗句,来做到“说字”,同时也可让玩家着眼于汉语言文化之外的中华传统文化与诗词文化,扩充玩家的知识面。让玩家自主选择汉字的字义,来巩固玩家对汉字的认识,达到“解字”的目的。最后,将写字作为一个玩法融合进游戏,同时将玩家写出来的汉字化为实物,以达到“用字”的目的。

参考文献

[1] Vatavu, R.-D., Anthony, L. and Wobbrock, J.O. (2012). Gestures as point clouds: A $P recognizer for user interface prototypes. Proceedings of the ACM International Conference on Multimodal Interfaces (ICMI '12). Santa Monica, California (October 22-26, 2012). New York: ACM Press, pp. 273-280.

About

A 2D PuZzle Game for Chinese Computer Design Compitition in 2022

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published