ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CodeCombat Game Development 1 课程教案全解析:从 Spawnables 到 Tabula Rasa 的完整教学指南

CodeCombat Game Development 1 课程教案全解析:从 Spawnables 到 Tabula Rasa 的完整教学指南 游戏开发教育前端后端【免费下载链接】codecombatGame for learning how to code.项目地址https://gitcode.com/gh_mirrors/co/codecombat点击查看免费下载Game Development 1GD1是 CodeCombat 官方为初学者设计的游戏设计与开发入门课程本文基于仓库中的 gd1-5day.md 教案文档完整拆解其 4 节课的教学脉络、核心编程概念Spawnable、Goal、Mechanic、Property、课堂活动设计与差异化教学策略并结合 DocFormatter.coffee、GoalManager.coffee 等源码揭示game.spawnXY()等指令在 CodeCombat 关卡引擎中的底层实现原理。读完本文你将掌握如何在课堂上完整落地 GD1 课程从生成对象到自定义目标再到属性修改最后引导学生用 Level 17 Tabula Rasa 完成属于自己的游戏作品。课程概览这是一门什么样的课Game Development 1 是一门面向零基础学生的游戏设计开发入门课通过课堂讨论与动手编程相结合的方式让学生学会编写游戏所需的具体指令并在游戏开发关卡中逐步实践。课程最终以个人项目收尾——每个学生独立设计并创造属于自己的游戏并通过同伴反馈不断改进。项目内容难度等级Beginner初学者前置课程Introduction to Computer Science计算机科学导论建议课时4 次课 × 55 分钟最低要求适用语言教案以 Python 课堂为主编写可轻松改编为 JavaScript该教案文档最后更新于 2019 年 3 月对应的课程在 CodeCombat 中被归类为campaign-game-dev-1见 campaigns.js 中的课程 slug 列表关卡运行在专用的游戏开发关卡路由play/game-dev-level/:sessionID下见 Router.js。课程模块总览模块关卡主题1. Spawnables and Mechanics生成物与机制1–5Over the Garden Wall 至 Gemtacular生成对象、游戏机制2. Goal Changes目标变更6–11Vorpal Mouse 至 Hedge Magic目标、各类生成物3. Changing Properties修改属性12–16Forest Incursion 至 Time to Live属性4. Final Project - Tabula Rasa最终项目17Tabula Rasa综合运用全部课程内容教案原文中给出的停止点建议学完 Level 5Gemtacular后暂停待下一节课引入新概念再进入 Level 6学完 Level 11 后暂停再进入 Level 12学完 Level 16 后进入最终项目 Level 17。这种每节课聚焦一组新概念的编排保证了知识点递进清晰。关键术语课程建立了贯穿始终的五个核心概念它们也是学生在课堂上必须掌握的游戏词汇Player玩家——玩游戏并控制游戏角色的人。示例在俄罗斯方块中按按钮让方块落下的那个人。Goal目标——玩家为了获胜或在游戏中前进而必须完成的任务。示例玩家必须收集所有宝石才能进入下一关。Mechanic机制——规定玩家如何与游戏互动、游戏如何与玩家互动的规则。示例平台游戏中玩家按下按钮让英雄跳跃。Spawnable生成物——学生可以用spawn指令添加到游戏中的对象。示例场景装饰、角色和宝石。Property属性——对象的一个特征。示例被生成的宝石的 x 坐标位置。从源码结构看spawnable在 CodeCombat 关卡文档体系中是一种专门的文档类型在 DocFormatter.coffee 中spawnable类型的条目会被单独处理且当关卡类型为game-dev时所有方法文档的所有者owner都会从hero切换为game见 第 62 行这正对应教案中反复强调的在游戏开发课里用game而不是hero这一关键认知转变。Lesson 1Spawnables and Mechanics生成物与机制覆盖关卡Over the Garden Wall1至 Gemtacular5教学摘要本课为学生提供在自建关卡中添加生成物spawnable objects和目标goals所需的工具。学生将学习基础游戏机制以及如何设计目标明确的关卡。材料准备便签纸Sticky Notes马克笔Markers可选材料Progress Journal进度日志、Engineering Cycle Worksheet工程循环工作表、Python 语法速查卡或 JavaScript 语法速查卡随课程提供的可打印 PDF 资源学习目标编写代码时使用正确的语法syntax编写代码时使用正确的顺序sequencing使用参数arguments向方法输入信息使用合适的方法生成对象并定义游戏目标定义基础词汇spawnable、mechanic、goal课程标准对应CSTA 1A-AP-10使用顺序和简单循环编写程序以表达想法或解决问题。CSTA 1A-AP-15使用正确术语描述程序迭代开发过程中采取的步骤与做出的选择。开场活动10 分钟游戏拆解Game Breakdown讲解Explain向学生定义 goal、mechanic、spawnable 三个术语定义见上文关键术语部分并请学生从自己喜欢的游戏中举例。告诉学生他们将在本单元亲手设计包含所有这些要素的游戏而今天先从如何生成对象开始。互动Interact将全班分为 3–4 人小组。在投影上播放一个简单的在线教育游戏可以是类似 2048 的简单游戏也可以是更复杂的冒险游戏让学生分组讨论并判断游戏中的goals、mechanics和spawnables分别是什么把小组共识写在便签纸上并贴到黑板前。讨论Discuss全班对照便签纸检查各组结论是否一致若有分歧则让学生讨论并论证自己的答案。可用以下讨论问题引发反思我们看的这些游戏有什么共同点每个游戏都有一个玩家必须完成的明确目标才能进入下一阶段。而且每个游戏都有玩家与它互动的方式以及玩家必须以某种方式操作的对象。我们看的这些游戏有什么不同这些游戏的目标、机制和生成物各不相同因此完全改变了玩家的体验。编码时间40 分钟告诉学生今天将完成第 1–5 关Over the Garden Wall 至 Gemtacular。先引导学生回忆在《计算机科学导论》里他们使用过hero.moveRight()这样的指令。本课要强调的是——学生不再编程让英雄通关而是自己设计这些关卡。因此他们要使用的方法大多以game开头而不是herogame.spawnXY(gem, 20, 34)这就是整个 GD1 课程的第一行核心代码game.spawnXY(type, x, y)用于在指定坐标生成一个对象。在 CodeCombat 的文档渲染层这一指令对每个 spawnable 类型都会自动生成示例代码var xxx game.spawnXY(xxx, 21, 20)见 DocFormatter.coffee并支持自动翻译为 Python 等多种语言translateUtils.translateJS这正是课堂上方法参考卡的来源。让学生按自己的节奏通关教师在教室内巡回辅导必要时提醒学生使用每关右上角的Hints提示按钮。教案明确建议学生完成第 5 关Gemtacular后即停止由下一节课引入新概念再开始第 6 关Vorpal Mouse。需要留意的常见问题Look Out For学生最初可能在 X/Y 坐标上遇到困难。如果学生难以把对象放到屏幕上想要的位置可以简要复习坐标概念提醒他们(0,0) 坐标对应屏幕左下角用鼠标悬停在某点上即可看到该点的坐标。课堂收尾5 分钟用以下问题引导学生反思可进行简短讨论也可让学生以 Exit Ticket离场票形式提交书面回答用你自己的话解释游戏的组成部分。游戏有目标、机制和生成物。目标告诉玩家怎么做才能赢。机制是玩家在游戏世界里互动的任何东西比如捡硬币去商店买东西。生成物是出现在屏幕上、玩家可能与之互动的对象。解释机制和目标之间的区别。机制只是告诉玩家他们可以怎么玩而且会随设计而变目标则是具体的告诉玩家怎样能赢。差异化教学额外支持Additional Supports教学生如何在每关内找到提示、方法参考卡、错误信息和示例代码。在某一关卡卡住的学生会被游戏自动引导到额外的练习关卡。如需学生边做边记笔记可使用可打印的 Progress Journal 模板。若学生不擅长拆解问题可使用 Engineering Cycle Worksheet 强化分步解决问题的方法。若学生语法书写困难可提供 Python 或 JavaScript 语法速查卡。扩展活动Extension Activities让学生在Gemtacular第 5 关代码里尝试不同类型的生成物比如添加森林或设置围栏让迷宫更难。让学生在纸上画出他们想在课程后期搭建的迷宫草图。Lesson 2Goal Changes目标变更覆盖关卡Vorpal Mouse6至 Hedge Magic11教学摘要本课让学生练习修改目标以及生成达成这些目标所需的不同类型的对象。学习目标编写代码时使用正确的语法与顺序使用参数向方法输入信息区分不同类型的目标与生成物课程标准对应CSTA 1A-AP-15使用正确术语描述程序迭代开发过程中采取的步骤与做出的选择。开场活动10 分钟参数回顾Arguments Throwback复习Review讨论在《计算机科学导论》中出现过的**参数arguments**概念请学生举例过去使用参数的情形。在计算机科学导论中我用过hero.moveRight(5)指令可以改变我移动的步数。再问学生在游戏开发课程中他们在哪里用到了参数我用game.spawnXY(chest, 8, 14)指令时可以修改所有参数比如game.spawnXY(forest, 26, 51)。这改变了生成物的类型以及它在屏幕上的生成位置。互动Interact在黑板上画出下面的对照表让学生抄进笔记本收集目标Collect Goal移动目标Move Goal击败目标Defeat Goal生存目标Survive Goal描述所需生成物语法让学生分组简要完成这张比较四种目标类型的图形组织器graphic organizer。告知学生有些目标类型他们在游戏中还没遇到过可以等以后遇到时再补全对应列。编码时间40 分钟学生完成第 6 关Vorpal Mouse至第 11 关Hedge Magic按自己的节奏进行教师巡回辅导必要时提示使用 Hints 按钮。建议学生在第 11 关后停止待下一节课引入新概念再进入第 12 关Forest Incursion。需要留意的常见问题学生可能不清楚达成某个目标需要什么条件。例如如果关卡设定的是 collect goal收集目标却没有可收集的宝石关卡将无法完成。要引导学生利用图形组织器分析达成某个目标所需的要素。课堂收尾5 分钟你如何改变放到屏幕上的生成物的位置我可以修改game.spawnXY(type, x, y)指令中 x 坐标和 y 坐标的参数把它们放到我想要的位置。生存目标survive goal与其他目标相比有什么独特之处其他目标都需要完成某个任务而生存目标只需要在时间耗尽前活下来。差异化教学额外支持与 Lesson 1 相同——引导使用每关内的提示、方法参考卡、错误信息与示例代码卡关学生自动获得练习关卡可提供 Progress Journal、Engineering Cycle Worksheet、语法速查卡等可打印资源。扩展活动让学生在Hedge Magic第 11 关的代码上增加两个目标并实现赢得关卡的能力。源码视角目标在引擎里是如何被跟踪的教案中的 collect goal、defeat goal、survive goal 等目标类型对应 CodeCombat 世界引擎中 GoalManager.coffee 的目标跟踪机制。从源码结构看目标管理器支持killThangs击杀目标、saveThangs营救目标、getToLocations到达目标、keepFromLocations远离目标、collectThangs收集目标、codeProblems代码规范目标等多种目标属性见 GoalManager.coffee并为每个目标维护一个状态机incomplete未完成→success成功或failure失败同时记录达成时的关键帧keyFrame见 第 200-222 行。目标管理器同时运行在主线程与每次世界生成world generation的进程中后台实例负责监听世界事件角色死亡、接触目标、离开地图、收集物品等见 第 55-61 行并判定目标状态主线程实例则负责更新 UI 通知。最终关卡是否通关由checkOverallStatus汇总所有非可选目标的状态决定见 第 182-195 行。这解释了教案中有 collect goal 就必须有可收集的宝石这一硬性规则的引擎原理目标状态依赖世界事件驱动没有对应的生成物目标就永远不会被判定为成功。Lesson 3Changing Properties修改属性覆盖关卡Forest Incursion12至 Time to Live16教学摘要本课让学生把《计算机科学导论》中学到的对象知识应用到游戏开发场景中并首次引入属性properties这一概念。学习目标将对象属性的知识应用到游戏开发中通过修改属性来改变游戏行为以实现期望的目标课程标准对应CSTA 1A-AP-15使用正确术语描述程序迭代开发过程中采取的步骤与做出的选择。开场活动10 分钟对象与属性Objects and Properties复习Review讨论《计算机科学导论》中的**对象objects**概念请学生举例他们遇到过哪些对象。在计算机科学导论里我用了hero对象在这个班里我用game对象。讲解Explain向学生解释**属性property**这一术语属性是对象的特征可以是与对象相关的任何数据比如英雄的最大生命值或者火焰喷射器喷出的火焰的朝向。让学生识别教室里不同对象的属性。例如列出他们坐着的课桌的属性。注意学生识别出的属性如对象的大小、形状和颜色实际上是对应着keys键的values值。每个属性都有这样的键值对结构属性键是size值是3 feet3 英尺。编码时间40 分钟学生完成第 12 关Forest Incursion至第 16 关Time to Live按自己的节奏进行教师巡回辅导必要时提示使用 Hints 按钮。建议学生在第 16 关后停止用下一节课讲解最终项目再开始第 17 关Tabula Rasa。需要留意的常见问题学生可能能熟练地在代码中修改属性但要确认学生理解这些修改的意义——学生应能解释修改属性在游戏中的实际作用。课堂收尾5 分钟为什么能够修改不同对象的属性是有用的在开发游戏时我可以控制角色的外观以及它们之间如何互动。修改对象的属性与使用hero.moveRight()这样的方法有什么不同修改对象属性会改变作为对象一部分存储的数据使用方法则让对象做某事但不一定改变与对象关联的数据。差异化教学额外支持与前述各课一致——使用关卡内提示、方法参考卡、错误信息与示例代码自动练习关卡可打印的 Progress Journal、Engineering Cycle Worksheet、语法速查卡。扩展活动让提前完成的学生互相试玩彼此在第 16 关Time to Live制作的游戏并给出如何让关卡更难的反馈。源码视角属性与方法的本质区别教案中修改属性 vs 调用方法的辨析在 CodeCombat 文档系统里同样有对应实现。在 DocFormatter.coffee 中文档条目按type区分property类型的条目只展示名称doc.shortName doc.name.split(.).pop()见 第 90-91 行而function类型才会渲染成game.methodName(args)的调用形式见 第 68-76 行。从文档体系的这种区分可以推断属性是对象上直接存取的数据读/写值方法则是对对象执行的操作——这与教案要求学生理解的概念完全一致。Lesson 4最终项目——Tabula RasaTabula Rasa覆盖关卡Tabula Rasa17教学摘要这一关是一块空白画布Tabula Rasa 意为白板。鼓励学生综合运用课程中学到的所有技巧进行创意设计每个学生都应设计一个游戏创造性地组合学过的游戏对象、目标和机制。游戏至少应满足生成一个玩家Spawn a player。添加一个或多个供玩家完成的目标。组合运用障碍、敌人、收集物和其他元素为玩家创造有趣的挑战。材料准备便签纸3 种不同颜色墙面空间 / 海报板 / 翻转图表可选材料Progress Journal、Engineering Cycle Worksheet、Python 或 JavaScript 语法速查卡可打印资源。学习目标将 GD1 课程中介绍的工具与概念应用到创意游戏中。用语言解释促使他们写出特定程序与游戏的设计决策。课程标准对应CSTA 1A-AP-15使用正确术语描述程序迭代开发过程中采取的步骤与做出的选择。CSTA 3A-AP-23在复杂程序开发过程中使用文字、图形、演示或展示来记录设计决策。开场活动10 分钟项目规划Project Planning讲解Explain向学生讲解创作游戏的六个步骤设计Design——可以在纸上完成描述创意、画出地图草图、列出目标。规划Plan——基于设计用流程图或通俗英语写出如何在游戏引擎中编码实现该项目的计划。构建Build——把初始设计在游戏引擎中搭建出来本课程中即使用 Tabula Rasa 关卡来构建游戏。测试Test——学生在构建游戏的过程中应始终通过亲自游玩来测试游戏。反馈Feedback——学生把游戏链接分享给朋友收集什么好玩、什么让人沮丧的反馈。改进Improvements——基于反馈回到构建阶段对游戏进行改进。工作时间50–100 分钟告诉学生接下来几天他们将在第 17 关Tabula Rasa创建自己的游戏。强调前两步设计与规划不需要电脑可以在笔记本或白板上完成——不允许学生直接跳到写代码。需要留意的常见问题很多学生可能很快就能达成通关所需的基本目标。要鼓励学生给游戏增加额外元素让它更有趣、更具挑战性。很多学生可能想跳过或草草了事地完成设计与规划阶段。要督促学生认真对待这些步骤至少投入 15 分钟。指出真正的游戏设计师在动手前总是先有规划因为这能帮他们预判那些事情不像最初设想那样运转的卡点。课堂收尾5 分钟一旦开始编程你最初对游戏的想法改变了吗为什么开始编程后我意识到我无法把最初计划的所有不同目标都加进去。我修改了代码先只做一个目标之后再逐步添加。看到同学玩你的游戏时有什么让你意外吗你根据他们游玩的情况做了修改吗我的游戏比我预想的更容易通关。我想让它更有挑战性。差异化教学额外支持使用关卡内提示、方法参考卡、错误信息与示例代码可打印的 Progress Journal、Engineering Cycle Worksheet、语法速查卡。分享与反馈鼓励学生把最终项目的链接分享给家人和朋友。教案还邀请师生将最佳项目反馈给 CodeCombat 官方团队邮箱与官方社交账号已不再维护但仓库中仍保留教师提交游戏开发项目的服务端点/contact/send-teacher-game-dev-project-share见 contact.js这一机制也表明 GD1 最终项目在 CodeCombat 的教学体系中承担着作品展示与成果评估的功能。课程设计与源码实现的对应关系一览为了让读者快速把握教案与引擎实现之间的映射下面汇总本文涉及的对应关系教案概念关卡引擎中的对应实现源码位置用game.xxx()而非hero.xxx()game-dev 类型关卡中文档所有者自动切换为gameDocFormatter.coffeegame.spawnXY(gem, 20, 34)生成对象spawnable 文档类型自动生成game.spawnXY示例并支持多语言翻译DocFormatter.coffeeCollect / Defeat / Survive 等目标类型GoalManager 跟踪 killThangs、collectThangs、getToLocations 等目标属性与状态机GoalManager.coffee关卡通关判定checkOverallStatus汇总全部非可选目标状态success/failureGoalManager.coffeeGD1 课程在站内的组织方式课程 slugcampaign-game-dev-1专用路由play/game-dev-level/:sessionIDcampaigns.js、Router.js总结Game Development 1 是一套结构完整、循序渐进的教学方案前 5 关解决生成对象与基础机制6–11 关解决目标类型与达成条件12–16 关解决对象属性修改最后用 Tabula Rasa 收束为综合创作项目。教案不仅在知识层面覆盖了坐标、参数、对象、属性、键值对等编程基础概念还在教学法层面提供了开场活动、编码时间、收尾反思、差异化支持与扩展活动五段式结构。结合 GoalManager.coffee 与 DocFormatter.coffee 等源码可以看到教案中的每一个指令与目标概念都能在 CodeCombat 关卡引擎中找到精确的对应实现——这也让 GD1 既适合作为课堂授课大纲也适合作为研究 CodeCombat 游戏开发关卡引擎的入门文档。如需完整授课可进一步参考仓库中的 gd2.mdGame Development 2引入game.addManualGoal自定义目标与 gd3.mdGame Dev 3衔接后续课程形成完整的游戏开发教学序列。赞分享游戏开发教育前端后端【免费下载链接】codecombatGame for learning how to code.项目地址https://gitcode.com/gh_mirrors/co/codecombat点击查看免费下载相关推荐3步掌握Keyviz让键盘操作可视化提升工作效率的完整指南3步掌握Keyviz让键盘操作可视化提升工作效率的完整指南 你是否在录制教程时观众总是问刚才按了什么快捷键或者远程协作时同事看不清你的操作步骤K游戏开发教育前端后端Kubespray 如何启用 Kube-OVN 网络插件并验证 Pod 网络与子网配置Kubespray 如何启用 Kube OVN 网络插件并验证 Pod 网络与子网配置 本文介绍如何在使用 Kubespray 部署的 Kubernetes游戏开发教育前端后端OpenProject 如何从当前主版本升级到下一主版本OpenProject 如何从当前主版本升级到下一主版本 如果你在运行 OpenProject 的生产实例需要把当前主版本例如 16.x升级到下一个主版游戏开发教育前端后端上一篇AnimatedTextInput自定义样式完全教程从零开始创建个性化输入组件下一篇突破物流效率瓶颈10个ML-Agents强化学习优化配送路线技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表