【游戏设计原理】21 - 解谜游戏的设计
你想象一下,刚坐下准备玩游戏,想着“今天得挑战一下我的智商极限!”可结果碰上一个谜题,傻眼了,心里默念:“这啥玩意儿?这游戏是在玩我吗?”如果这个谜题太简单了,你可能会开始怀疑自己智商正常不正常;要是又太难,那你可能会忍不住把手机扔一边,嘀咕:“这游戏是不是不给我活路?”
一个好的解谜游戏就得让玩家既不觉得自己是天才,也不至于被难题搞得怀疑人生。谜题的难度得合适,不能让你觉得“一秒钟就解了”,也不能让你卡得喘不过气。最重要的是,谜题要考验你的脑袋,不是靠“随便点点,试试运气”解决的那种低级操作。
而且,最关键的是,谜题得告诉你:目标是什么? 你得清楚自己要做啥,不然你就会觉得“这游戏到底是在玩我,还是我被它玩了?”这种感觉。
怎么在游戏设计中用上这个原理
- 难度适中,不能太简单也不能太难
游戏的谜题难度得循序渐进,不可能一上来就让玩家觉得“哎呦,咋这么简单啊,我都能瞎猜”。如果一开始就简单的让人想打人,那就不行。关卡得有点挑战,能让玩家有种“哇,难度提升了,但我还能搞定”的感觉。 - 面包屑式引导,给玩家点线索
面包屑是什么?就像是《哈利波特》里的赫敏,时不时给你丢点线索,告诉你该往哪个方向走。游戏中,可以通过小提示慢慢引导玩家,不至于让他们觉得“这到底是啥鬼?”给个小线索,能让玩家自己慢慢发现谜题的解法。 - 智慧为主,不是蛮力
“这关能过吗?”“乱点几下试试看,能行就行。”这种操作方式绝对不适合解谜游戏。好的谜题要让玩家动脑筋,用智慧去解决,而不是靠乱试。游戏要设计得让玩家明白,解决问题靠的是聪明才智,而不是“死磕”或者“碰运气”。 - 目标明确,不能搞不清楚
设计谜题时,给玩家一个明确的目标——“该做啥才行”。不能让玩家一直懵逼,想:“我是不是漏了什么线索?我该做啥?”这样太不爽了。目标得清晰,玩家知道“我得干这个,才能过关”。 - 公平和确定性
解谜游戏可不能随便让你猜。谜题的答案应该是确定的,玩家只要按照正确的方法解决,结果就该是一样的。而不是“今天好运解了,明天坏运就过不去了”这种随机因素。得有规律可循,让玩家知道“只要做对了就能过关”。
小结
设计解谜游戏时,难度要适中,让玩家既能挑战自我,又不至于卡住放弃;要有面包屑式的引导,让玩家逐步获得线索,避免迷失方向;谜题的解答要靠智慧而非“碰运气”;目标明确,让玩家知道自己要做什么,避免困惑;公平性和确定性是必须的,让每个玩家都能通过智慧解决问题,而不是靠随机因素。这些都是设计一个既有挑战性又能让玩家享受的解谜游戏的重要因素。
原理21:解谜游戏的设计
解谜游戏(Puzzles)是游戏中很有意思的一类。设计师斯科特·金(Scott Kim)这样定义“谜题”(puzzle):“有趣的东西,并且有一个正确的解答”。这个定义尽管模糊,却至少提出了一个定义谜题的有用元素:它是有解的。而一个谜题要想达到效果,还有一些其他的要求。
一个好的谜题对它的受众而言既不能太容易,也不能太难。一个完美的谜题应该有恰到好处的难度,让玩家感到挑战,又不会因为太过困难而受挫放弃。要让一个谜题游戏做到这一点,一个好的方式就是面包屑式(breadcrumbs)的引导。这些谜题内或谜题外的提示一步一步引导用户接近答案。例如,在数独(Sudoku)或纵横填字(crossword)游戏中,随着一个一个空格被填上,玩家也就得到了对剩下的空格更多的提示,那些剩下的空格也就变得越来越好填了。在玩纵横填字时,尽管一个玩家在刚开始并不知道其中的一个单词,随着其他单词的填入,这个未知单词的其中一些字母会被陆续填上。面包屑式的引导将游戏中的线索渐进式地提供给玩家,一步一步地降低难度,接近玩家对困难的容忍度。
一个好的谜题应该需要一个聪明、智慧的解决方法,而不是通过简单的蛮力就能解决。看这个例子:“我现在想的是1到10中的一个数字。你猜是哪个?”“1?”“不是。”“2?”“不是。”“3?”“不是。”这就不是一个好的谜题。一个仅有寥寥数条错误路径的迷宫不是一个好迷宫。因此,一些小测试和谜语都不是好的谜题,因为答题者要不就知道答案,要不就不知道,没法把这些谜题分解成一步一步来进行解答。
一个谜题的产生可以是随机的,但当玩家开始解答它时,它必须是确定的。例如,一个数独题可以被随机生成,但当玩家开始解答这道题时,任何两个填了同样数字的玩家都会得到完全相同的结果。如果两个玩家在玩同一个扫雷游戏,当他们以同样的顺序点了同样的方格,他们的经历将是一样的。相反,如果两个人在打网球,当他们做了完全一样的动作,他们的经历会完全不一样。国际象棋,除非你的对手是专门为这个目的而设计的人工智能,也是不确定的。如果一个玩家走了5次相同的棋,他的5个不同对手会有5个(甚至以上)的应对方式。如果规定好确定的几步棋和一些明确的规则,我们也可以设计一个与国际象棋有关的谜题。比如一些解谜杂志中的国际象棋问题,会规定对手的走棋规则,要求在这种情况下在X回合后将死对手。
最后,一个好的谜题必须让玩家知道目标是什么,他们需要进行怎样的操作来达成这个目标。有些谜题让人困扰,就是因为玩家不知道规则。一些老的探险游戏就有这样的问题——像是二个房间里有一些元素很明显是一个谜题,但是这个谜题的目标是什么、需要操作哪些东西、如何操作这样的信息却不展示给玩家。这些“谜题”的设计师通过模糊化规则来增加解谜的难度,但是这样的谜题是不公平的。“玩家需要解决‘如何解决这个问题’的问题”只是一个自以为聪明的借口,让我们不能设计出真正有趣的谜题。
总而言之,当我们设计一个谜题时,要确保:
- 在难度上要让玩家保持在一个“心流”(参见原理38“心流”)的状态;
- 需要一个聪明、智慧的解决方法;
- 是确定的;
- 从其目标和机制上来说是明确而公平的。
相关文章:

【游戏设计原理】21 - 解谜游戏的设计
你想象一下,刚坐下准备玩游戏,想着“今天得挑战一下我的智商极限!”可结果碰上一个谜题,傻眼了,心里默念:“这啥玩意儿?这游戏是在玩我吗?”如果这个谜题太简单了,你可能…...
【漏洞复现】Wordpress GutenKit 插件 远程文件写入致RCE漏洞复现(CVE-2024-9234)
🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 一、漏洞概述 1.1漏洞简介 漏洞名称:Wordpress GutenKit 插件 远程文件写入致RCE漏洞复现漏洞编号:CVE-2024-9234漏洞威胁等级:超危影响范围:GutenKit <= 2.1.0…...
深度学习任务简介:分类、回归和生成
深度学习任务简介:分类、回归和生成 文章目录 深度学习任务简介:分类、回归和生成一、分类任务(Classification Task)什么是分类任务?**分类任务的常见应用**分类任务的输出主要算法 二、回归任务(Regressi…...

【测试】Unittest
近期更新完毕,建议关注收藏! 目录 简介TestCaseTestSuiteTestRunnerTestLoaderFixture tips:ctrl? 可以看方法的help文档 简介 python自带的单元测试框架,也可以做自动化测试 组织多个用例去执行,用例都是用单独的目录存放的 丰…...
java 根据路径下载文件转换为MultipartFile,并且上传到服务器
直接上代码 controller层 GetMapping("/downloadAndUploadAttachment")UpdateOperationLogging(msg "根据路径下载文件转换为MultipartFile,并且上传到服务器")Operation(summary "根据路径下载文件转换为MultipartFile,并且上传到服务器", de…...
Onvif服务端开发
实现了Onvif服务端的设备搜索和RTSP流的功能。用 ONVIF Device Manager 测试工具可以成功搜索到设备和获取到RTSP流,有的路由器可能不支持239.255.255.250组播,我一开始用的电信的那种光猫路由器二合一的,一直搜不到设备,后面用So…...
【jvm】主要参数
Java 虚拟机(JVM)有许多参数用于控制其行为和性能,下面是一些 主要的 JVM 启动参数,这些参数通常分为以下几类: 内存管理相关参数 这些参数主要用来配置 JVM 的内存分配策略、堆内存、栈内存等。 -Xms 设置 JVM 启动…...

【优选算法】—移动零(双指针算法)
云边有个稻草人-CSDN博客 想当一名牛的程序员怎么能少的了练习算法呢?! 今天就立即开启一个新专栏,专干算法,提高算法能力(废柴的我也在准备蓝桥杯哈哈)—— 目录 1.【 283. 移动零 - 力扣(Lee…...
PostgreSQL标识符长度限制不能超过63字节
文章目录 问题:标识符太长会被截断分析相关源码可以尝试以下案例 问题:标识符太长会被截断 在创建表时,发现表名太长会自动被截断,导致查询表时报错了。 分析 参考:https://www.postgresql.org/docs/current/limits…...
嵌入式硬件面试题
1、请问什么是通孔、盲孔和埋孔?孔径多大可以做机械孔,孔径多小必须做激光孔?请问激光微型孔可以直接打在元件焊盘上吗,为什么? 通孔是贯穿整个PCB的过孔,盲孔是从PCB表层连接到内层的过孔,埋孔…...

深度解析 OneCode 混合编译:创新驱动的开发变革
前言 在软件开发领域,不断追求高效、灵活与强大的开发模式是永恒的主题。OneCode 作为一款引领潮流的开发工具,其混合编译特性正逐渐成为开发界瞩目的焦点。本文将深入剖析 OneCode 的混合编译机制,揭示它如何为软件开发带来前所未有的变革与…...

[文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)
文章目录 Abstract:摘要聚类深度聚类 KL散度深度嵌入式聚类(DEC)KL散度聚类软分配(soft assignment)KL散度损失训练编码器的初始化聚类中心的初始化 实验评估总结 Abstract: This week I read Unsupervised Deep Embedding for Clustering Analysis .It…...
ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。
在 Web 开发中,GET 和 POST 是两种常见的 HTTP 请求方法,它们有一些显著的区别。此外,datatype 参数在 jQuery 的 ajax() 请求中指定了预期的响应数据类型。接下来,我会详细解释这些问题。 1. GET 和 POST 请求的区别 GET 请求 和…...
网络七层杀伤链
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&…...
GAN网络详解及涨点大全总结(源码)
(需要源码请私信或评论) GAN原理 GAN的基本原理建立在 生成模型和判别模型的博弈过程 上。这种独特的机制使得GAN能够在复杂的分布上实现高效的无监督学习。在这个过程中,生成器G和判别器D相互竞争,最终达到一种平衡状态,在此状态下,G能够产生高质量的合成样本,而D则无…...
【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等
【自动化】Python SeleniumUtil 工具 【Python】使用Selenium 操作浏览器 自动化测试 记录-CSDN博客文章浏览阅读58次。文章浏览阅读42次。【附件】Selenium chromedriver 驱动及浏览器下载。【附件】Selenium chromedriver 驱动及浏览器下载-CSDN博客。3.安装Chrome浏览器驱动…...
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
🗺️博客地图 📍方法一、timedatectl 命令 📍方法二、手动链接 /etc/localtime 📍方法三、修改时区变量 在 Linux 系统中,可以通过以下3种方式将系统时区修改为 CST(中国标准时间,GMT8 或称 …...

android:sharedUserId 应用进程声明介绍
背景 adb install 安装系统软件报错,原因是签名不一致,进程改变。 代码分析 AndroidManifest.xml 定义的 android:sharedUserId 应用归属进程不同,从phone切换到system。 初始配置 <manifest xmlns:android="http://schemas.android.com/apk/res/android"c…...

解锁ApplicationContext vs BeanFactory: 谁更具选择性?
目录 一、聚焦源码回顾 (一)源码分析和理解 (二)简短的回顾对比建议 二、ApplicationContext vs BeanFactory特性对比 (一)主要特性总结 (二)直接建议 三、案例简单说明 &am…...
一篇梳理清楚http请求知识点
HTTP请求是Web开发中的重要组成部分,它涉及到客户端和服务器之间的通信。掌握HTTP请求的知识点对于前端开发和后端开发都至关重要。以下是关于HTTP请求的详细梳理,结合代码进行说明。 1. HTTP请求概述 HTTP(超文本传输协议)是一个…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...