项目2 电脑游戏中的人工智能
站点: | 科创教育数字化教学平台 |
课程: | 人工智能教学指南与实操(中学) |
图书: | 项目2 电脑游戏中的人工智能 |
打印: | 访客用户 |
日期: | 2025年05月4日 星期日 02:50 |
描述
在这个项目中,学生将探索如何使用不同的人工智能算法来驱动或玩各种类型的电脑游戏。他们将研究几个简单游戏的代码,看看电脑是如何玩这些游戏,如何根据人类玩家的选择提高自己的性能。最后,学生将用人工智能的角色或对象编写一个原始的游戏应用程序。
1. 项目概述
科目:计算机科学
适用年级:9-12年级
预计时间:5-8小时
基础条件:基本的编码技能
词汇:
Artificial intelligence 人工智能
behavior tree algorithm 行为树算法
Bot 机器人
Finite State Machine (FSM) algorithm 有限状态机(FSM)算法
Monte Carlo Tree Search (MCTS) algorithm 蒙特卡罗树搜索算法
neural network神经网络
non-player character (NPC)非玩家人物(NPC)
reinforcement learning强化学习
项目目标:
(1)解释人工智能在游戏中的常见用途。
(2)做出一个人工智能算法,与人类进行对抗游戏。
项目标准:
ISTE学生标准
2.数字公民
学生们表现出对使用和分享知识产权的权利和义务的理解和尊重。
5.计算机思考者
学生们理解自动化是如何工作的,并使用算法思维开发一系列步骤来创建和测试自动化解决方案。
6.创意沟通者
学生创作原创作品或负责任地重新利用或重新混合数字资源到新的创作。
ISTE计算思维能力
4.创造力与设计
创建 CS 和 CT 学习环境,重视和鼓励不同的观点,学生代理,创造力,参与,快乐和乐趣。
5.整合计算思维
使用各种教学方法来帮助学生以计算步骤或计算机执行的算法的方式来构建问题。
A14K12人工智能的五大理念
2.表征与推理
代理维护世界的表示并使用它们进行推理。
3.学习
计算机可以从数据中学习。
4.自然交互
人工智能需要多种知识才能与人类自然地互动。
5.社会影响
人工智能可以对社会产生积极和消极的影响。
CSTA k-12计算机科学标准
3A-AP-15: 在涉及到实现、可读性和程序性能的权衡时,证明特定控制结构的选择是正确的,并解释所做选择的优缺点。
3A-AP-16: 设计并迭代开发计算工件,用于实际意图,个人表达,或者通过使用事件来启动指令来解决社会问题。
3B-AP-09: 实现人工智能算法与人类对手进行游戏或解决问题
2. 项目准备
材料:
- 带有互联网连接的计算机或平板电脑,用于在线访问工具和资源。
- 备选: 笔记卡片和笔,以支持项目的迭代设计过程。
教师的支持资源:
- 书:“Invent Your Own Computer Games with Python, 4th Edition, chapter 10: Tic-Tac-Toe and chapter 15: The Reversegram Game”
文章: “10 Games That Have Successfully Integrated Artificial Intelligence”
视频:AI and Games
3. 活动1:激活基础知识
在这个活动中,学生们将通过课堂讨论激活他们所玩游戏中关于电脑玩家的先验知识。
1.班级讨论,让学生思考现在游戏中存在的AI。
(1)你玩的哪些游戏有电脑玩家,包括你与电脑对抗的游戏和电脑角色作为队友或对手的游戏?你认为电脑玩家是由人工智能驱动的吗?为什么?
(2)机器人是可以与计算机系统或用户进行交互的人工智能代理。在电子游戏中,机器人可以被编程为独立玩游戏,或者作为人类玩家的对手或队友进行竞争。非玩家角色(NPC)是游戏中不受人类控制且不玩游戏的角色或物体。人工智能被用来驱动许多高级NPC的行为。你认为一个人工智能玩相对简单的游戏(如西洋跳棋、国际象棋或星际争霸)和电子游戏中的人工智能(如疯狂橄榄球、国际足联或魔兽世界)有什么不同?你认为人工智能在与人类玩游戏时和模拟人类(或游戏角色)的行为时需要不同的技能吗?
2.给学生分享软件开发者和作者 Al Sweigart2对人工智能的定义: “人工智能(AI)是一种能够对玩家的动作作出智能反应的计算机程序”(2016)。通过这个定义,看看学生是否会因为这个定义而改变他们对游戏中的角色的回答(电脑玩家是否是人工智能)。然后告诉学生,在这个项目中,他们将了解更多关于人工智能在电子游戏中的角色演变。
4. 活动2:介绍人工智能玩家如何在游戏中工作
在这个活动中,学生们考虑了各种类型的人工智能机器人和 npc,以及为什么游戏开发者会将它们整合到视频游戏中。
1. 让学生观看视频“ AI Playing Games # 12”,并阅读文章“Artificial Intelligence in Video Games.”。这些教学材料描述了人工智能在游戏中的各种用途。在学生观看和阅读时,让他们用图像式思考辅助工具写下他们所学到的关于电子游戏中使用的四种人工智能技术的知识。关键点包括:
(1)有限状态机(FSM)算法:
- FSM 是一种相对简单的人工智能算法,它的工作原理是一个有限的、特定的列表,列出了机器人或 NPC 在游戏中可能经历的所有事件。
- FSM 并不适用于所有的游戏,因为它提供了有限的游戏挑战。
- FSM 很容易智胜,因为它变得重复。
(2)蒙特卡罗树搜索(MCTS)算法:
- 在 MCTS 中,人工智能将所有可能的机器人动作可视化,然后基于这些动作,考虑人类会做出什么动作作为回应,以及人类可能做出什么动作作为回应。在权衡各种选择之后,它会做出最佳选择。
- MCTS 在许多战略博弈中得到了应用。
- 由于可视化总数的选项需要花费大量时间和计算,你可以编写人工智能随机在较小的选项中挑选,以优化速度。
(3)一个行为树算法:
- 行为树控制着决策的流程。它通过提问来工作,从第一个序列节点开始,然后通过一系列顺序决策;分支末尾的叶子是告诉机器人或 NPC 该做什么的命令。人工智能将继续沿着树继续前进,直到它失败或不符合标准,使它返回到原来的序列节点。当序列成功或失败时,它会将结果返回给所有可能序列的开始节点。
- 行为树允许机器人或 NPC 对环境中的线索或人类玩家的行为做出反应。
- 带有解锁新行为的线索的复杂行为树能创造一种错觉,即使没有使用神经网络,角色也在学习或适应。
(4)神经网络:
- 神经网络通过一系列输入节点和隐层节点处理信息,分析输入并产生输出。
- 机器人和 npc 的神经网络通常有一个明确的目标要实现,当它们试图实现这个目标时,通常会得到奖励或惩罚(例如,强化学习)。如果输出达到了预期的目标,人工智能就会成功并继续进行游戏中的下一个目标。
2. 讨论在更复杂的游戏中导致4种人工智能技术新的进化。
(1)这几种类型的人工智能技术有什么共同点?参考答案: 在所有类型中,人工智能不是随机而是基于特定的线索或条件做出决定的。
(2)FSM、MCTS、行为树这三者与神经网络有何不同?参考答案: 一个使用FSM,MCTS 和行为树的人工智能根据已经提供给它的选择或路径做出决定。使用神经网络或机器学习的人工智能可以随着时间的推移在任务中得到更好的训练,甚至可以用训练者想象不到的方式完成任务。
(3)这些技术在人工智能中是如何应用如何影响机器人或 NPC 在游戏中的复杂性?参考答案:FSM 是最简单的,角色只能做几件事。随着时间的推移,MCTS 可以处理数十亿或数万亿可能的游戏路径,并做出最佳的可能选择。行为树可以让玩家产生向玩家学习的错觉,提供更真实的体验。神经网络不仅允许最大的可能性的复杂性和现实性,同时也采取最努力的训练,以期望的方式行动。
3.学生在游戏中能识别出这四种类型的人工智能的特征后,分组让学生识别或研究四种类型的人工智能机器人或 npc 的例子。
参考答案:FSM驱动的机器人或角色:Pac-Man 中的鬼魂;DOOM 中的恶魔;Minecraft 中的爬行者、僵尸和蜘蛛;Pokemon 中的健身房领导。 MCTS驱动的机器人或角色:数字国际象棋、扑克、围棋或文明中的计算机玩家。行为树驱动的机器人或角色:魔兽世界或无尽任务中的 NPC;《异形: 隔离》中的外星人;《光晕2》、《哭泣4》和《生化奇兵无限》中的电脑玩家。神经网络驱动的机器人或角色:TD-gammon; DeepMind 的 AlphaStar 玩《星际争霸2》;IBM 的沃森玩《危险边缘》;Mar-IO玩《超级马里奥兄弟》。注意:神经网络驱动的机器人或角色还不常见,因为需要为数千或数百万人工智能玩家收集和分析的数据将是巨大的,但随着云处理和存储变得更快、更便宜,这在未来可能不会成为一个限制因素。
4.选做:让学生知道人工智能在游戏中的应用正在快速发展。将学生分成几个小组,每个小组进行快速的讨论,在下面主题中选择一个,找出5-10个揭示人工智能在游戏中新兴用途的事实,并让各小组分享他们学到的东西。
(1)使用机器学习来模仿人类游戏风格的AI机器人,如FIFA或Madden游戏 (可用资源:“AI for FIFA and Madden Games Is about to Get a Whole Lot Better”。)
(2)使用机器学习的人工智能机器人,通过主动向人类玩家学习,在游戏中变得更好。(可用资源:QuickDraw)
(3)好奇心驱动的人工智能机器人,如玩超级马里奥兄弟的机器人(可用资源:"Curiosity-Driven Learning: AI agents exploring without looking at any scores”)
(4)其他人工智能驱动的机器人或NPC主题。
5. 活动3:开发一个AI计算机游戏
在这个活动中,学生将利用他们关于人类如何玩游戏的概念性知识,思考如何编写程序让计算机智能地玩游戏。在这个过程中,学生将试验两个用Python编写的程序。即使没有python编程语言背景的学生,只要掌握基本编程技能和文本知识,也可以在此基础上学习。
1.学生互相玩10轮“石头剪刀布”游戏并讨论:作为人类,你是如何玩游戏?你的选择总是随机的吗?它们有规律可循吗?你是否试图适应其他玩家的行为?长时间玩游戏时,你是否会改变你的策略?
2.让学生为电脑编写并改进一个游戏的伪代码程序玩“石头剪刀布”游戏。
(1)让学生分组使用自然语言伪代码写一个程序来与人对抗玩“石头剪子布”。
(2)学生与电脑至少进行10轮 “石头剪刀布1.0”游戏。让学生回顾Python代码,并与之前的代码进行对比:
电脑是如何选择出什么手势的?参考答案:这不是真正的选择,它只是从第15行和第16行生成的一个随机选择。
电脑的获胜策略是什么?参考答案。没有什么策略,是运气。
这是一个人工智能的例子吗?参考答案。不是,因为没有自主的、基于感知的决策。电脑不会对玩家的动作有智能反应。
(3)让学生使用进行至少10轮“石头剪刀布2.0”游戏。告诉他们回顾所提供的Python代码,并思考它与他们写的伪代码和第一个石头剪子布的代码相比有何不同。
这个电脑是如何选择玩什么的?答案:首先,随机选择,然后5轮比赛后,计算机会确定玩家最常用的手势,并会选择击败这一步手势(例如,如果玩家最多出石头,那么AI将出布)。
这是AI的一个例子吗?答案: 根据Al Sweigart 的定义,这个程序演示了一个简单的AI,因为电脑跟踪并响应玩家最常出的手势。当玩家调整他们的游戏方式时,电脑也在调整。
要打败一个玩家需要收集什么数据?这些数据在代码中的什么位置?答案: 第14行和第15行构建了一个移动数组,第16-18行计算移动的数量和类型。
这是不是让电脑在剪刀石头布游戏中对玩家做出聪明反应的唯一方法?答案:不是,其他的选择包括跟踪所有玩家的手势以提高反应;跟踪最好的玩家并模仿;识别人类如何选择他们的手势的动作。
计算机需要收集哪些数据来模拟特定的玩家?答案: 为了模拟一个人,电脑需要收集更多回合的游戏,寻找模式和计数。它需要把很多游戏的跟踪数据保存到一个特定玩家的外部文件或数据库中。
(4)两个学生互相改进他们的伪代码,以确保电脑能够智能地响应玩家,小组与小组进行对比,讨论以上让电脑智能地玩剪刀石头布的各种方法哪一种最像人类。
6. 活动4: 为电脑游戏编写人工智能程序
在这个活动中,学生们将看到另外两个简单但比剪刀石头布更复杂的游戏。这两个程序的代码来自 Al Sweigart 的书《用 Python 发明你自己的电脑游戏》。在这个活动中,学生应该思考如何编写简单的人工智能程序,以及使用哪种类型的人工智能游戏方法: FSM,MCTS,行为树,或神经网络。根据学生的经验,班级的规模,和时间的数量,学生可以完成一个或两个选项作为个人,小组,或作为一个整个班级。同样,虽然这些程序是用 Python 编写的,但是具有基本编码技能和基于文本的语言背景知识的学生也能够理解所提供的简单命令和注释。
1.让学生用Trinket.io与电脑玩Tic-Tac-Toe 游戏,通读代码,然后指导学生检查90-117行,看看电脑玩家的人工智能是如何编程的。
- 电脑玩家是怎么选择的?答案: 电脑使用的是一个关于现状的决策树,在状态的基础上(顺序:如果它可以在那个回合赢得比赛,如果对手可以赢,或者角、中或边是空闲的),它会有行动。
- 计算机玩游戏的策略是什么?答案:如果在那个回合它不能赢得比赛,它将阻止对手得到三个连续,或者选择最好的可用空间。
- 用什么类型的算法来编写人工智能程序?答案: 简单的FSM算法。
2.让学生玩 Reversegram (Reversi 或 Othello 的一个版本),指导学生检查162-82行,看看计算机的人工智能是如何编程的。
- 这个程序是如何选择玩什么的?答案: 第162-82行是计算机用来决定哪些动作会导致最高的翻转次数的决策树。
- 玩的策略是什么?答案: 第一个策略是捕捉一个角落(168-71) ; 第二个策略是选择翻转结果最高的动作(174-82)。
- 用哪种算法编写AI程序?答案: 这是一个简单的蒙特卡罗树搜索,从所有可能的步骤中得出最优步骤。
7. 活动5:游戏中的人工智能和用户体验
在这个活动中,学生将考虑如何设计AI机器人和NPC影响用户的体验。
1.合作学习,讨论以下问题,例如:numbered heads together 或者think-pair-share。
(1)你觉得和电脑对抗、和人对抗是什么感觉?对手是电脑还是人对你来说重要吗?
(2)你是否认为用户更愿意与一个被描绘为人类角色的AI机器人对抗,而不是一个机器人或其他非人类角色?
(3)你不知道对手是AI,那有什么线索可以告诉你对手是AI?
(4)如果AI总是赢,你认为它是一个设计良好的AI玩家吗?为什么?如果不是,怎样才能设计出更好的AI玩家?
(5)如何利用这些程序中的知识来改进你对自己游戏中计算机玩家的角色和目标的设计?
8. 活动6:用AI机器人编写游戏程序
在这个活动中,学生对将使用一个迭代设计过程来编写一个游戏程序,其中一个电脑玩家将与一个人类玩家进行游戏。虽然他们在这个项目中测试的程序是用 Python 编写的,但是他们可以在课堂上用任何语言编写这个程序。
注意: 如果这个项目是在 AP 计算机科学课程中实现的,考虑添加额外的程序要求,例如使用列表、过程或具有多种控制结构的算法。
1. 指导学生设计迭代过程来编写一个电脑与玩家对战的游戏程序。学生可以从以上提到的四个程序中任意一个重新混合代码,或者创建一个完全原创的程序。如果学生使用的代码是别人写的,他们必须通过引用或归属提供适当的确认。这个游戏的一些想法包括:
- 通过改变游戏的复杂性(例如,在石头剪刀布上多加一个手势,或者在井字棋里多加一个棋盘) ,或者通过改变电脑玩家适应人类玩家移动的方式,在石头剪刀布或井字棋上进行扩展。
- 让AI更具攻击性或更具防御性。
- 增加或减少AI的双输比率,使玩家可以选择不同的难度水平。
- 写出两个AI程序,使它们可以和玩家或者彼此对抗。
- 写出模拟你个人游戏风格的AI,符合你的平均输赢比率。
- 写出模拟他人游戏风格的AI,符合他的平均输赢比率。
2. 在学生完成程序后,举办一个展览活动,让学生有时间玩其他人的游戏,并提供关于用户体验的反馈,例如他们喜欢的部分,或是他们可能改进的部分。
9. 活动7:反思
在这项活动中,学生应讨论以下问题,反思他们的学习,并思考AI在游戏中对个人和社会的影响:
(1)你认为将AI整合到机器人和 NPC 的开发和行为中改变游戏规则的最大的效果是什么?
(2)你认为游戏环境最终会有玩家难以区分的AI驱动角色吗? 为什么?
(3)你认为未来AI机器人和NPC在游戏有什么样的发展?
10. 扩展
以下是扩展学生在游戏中对人工智能探索的四种方法:
1.学生们可以通过 Al Sweigart 的书籍了解更多关于用 Python 编写人工智能游戏的知识,包括用 Python 发明你自己的电脑游戏,以及用 Python 和 Pygame 制作游戏,这些都可以在他的网站 inventwithpython. com上免费阅读。
2.学生可以通过观看“让我们制造一个破坏电子游戏的人工智能”(”Let’s Make an AI that Destroys Video Games (LAB) #13”) ,了解更多关于使用神经网络和强化学习来训练AI的知识。可以通过完成相应的hands-on lab来进一步学习。这两种资源都可以帮助学生完成强化机器学习的过程,以及开发高质量人工智能玩家的应用。
3.想要学习更多的学生可以了解探索用户开发的人工智能游戏开发教程 gamedev. net。
4.参加过大学先修数学和计算机科学课程的学生可能希望通过 Unity 的初学者在线课程探索人工智能在行业工具中的使用。