设计技术3:数字游戏设计与开发 | Design Technology 3: Game Design and Development

(2024版 | Edition 2024)

设计技术3:数字游戏设计与开发
Design Technology 3: Game Design
and Development

(2024版 | Edition 2024)

基本信息 | Basic Information

课程性质 | Course Type: 必修 | Compulsory 课程编号 | Course ID: 55007403 授课语言 | Language: 中文 | Chinese
先修要求 | Prerequisite: 无 | None 学分 | Credits: 4 课内学时 | Total Hours: 68
课程性质 | Course Type:必修 | Compulsory 课程编号 | Course ID:55007403
授课语言 | Language:中文 | Chinese 先修要求 | Prerequisite:无 | None
学分 | Credits:4 课内学时 | Total Hours:68
课程性质 | Course Type:必修 | Compulsory
课程编号 | Course ID:55007403
授课语言 | Language:中文 | Chinese
先修要求 | Prerequisite:无 | None
学分 | Credits:4
课内学时 | Total Hours:68

课程简介 | Course Introduction​

在本课程中,同学们将在老师的指导下以团队合作的形式进行一项完整的创作实践。通过本课程,他们将有机会产出高质量的作品、参与各类学科竞赛,同时也能为即将开展的毕业设计积累经验。本课程常会邀请业界专家参与教学,成果形式包括但不限于游戏、功能性游戏、交互软件、虚拟现实/增强现实等。
In this course, students go through a complete process of creation in teams under the guidance of the teacher. This course provides them with an opportunity to produce high-quality works so as to participate in various disciplinary competitions. At the same time they may also accumulate experience for their graduation projects about to begin very soon. Experts from the industries are often invited to participate as supervisors in this course, and the forms of the outcomes include but are not limited to games for fun, serious games, interactive applications, virtual reality / augmented reality applications, and so forth.

▼ 学习要求 | Learning Requirements

▲ 学习要求 | Learning Requirements

● 按照要求高质量完成课外自学 | Students need to accomplish the out-of-class self-learning tasks according to the requirement well enough.
● 允许选择适合自己的学习方向,但也鼓励跨界探索 | You may choose a suitable learing direction, but you are also encouraged to explore more.
● 自我学习与团队合作并重 | Put emphasis on both self growth and team collaboration.
● 创作过程中,在充分调研的基础上尽情发挥想象力 | In the creation process, let your imagination run wild based on thorough research.
● 合理规划创作时间,严格把握项目进度 | A team must have a reasonable working plan and control the progress strictly.

学习评价 | Learning Evaluation

这门以创作为导向的实践型课程要求创作团队在期末时提交用于作品展示的视频、陈述创作理念的视频,以及可以正常运行的游戏/交互作品原型;并且创作团队须以公开汇报及展览的形式进行创作成果的展示。
This creation-oriented course places emphsis on practice and requires the student-teams to submit a showreel video to promote their work, an introductory video to explain the concept of their creation, and a working prototype of their games or interactive applications at the end of the semester. They are also required to present to the public their work in the form of a presentation and an exhibition.

▼ 成绩构成 | How the score is given

▲ 成绩构成 | How the score is given

● 出勤记录 | attendance: 10%
-每次缺勤扣2分,迟到扣1分,扣完为止 | each absence results in -2 marks, each late arrival results in -1 marks
● 平时成绩 | usual performance: 20%
-随堂测试 | In-class quizzes: 5% x 4
● 期末作业 | final project: 40%
-游戏设计方案 | game design: 15%
4 8 12 16 20
完全抄袭他人作品,或整体设计品质粗劣 | The final result is a total copy or has inferior quality. 整体存在较明显模仿痕迹,或设计方案缺乏艺术性 | There are obvious traces of imitation or the design lacks artistry. 局部存在较明显模仿痕迹,或整体设计方案存在较明显不足 | Portions in the image show signs of obvious imitation, or the whole design has obvious flaws. 局部易令人联想到他人作品,创造性仍待提升,但设计方案基本令人满意 | Partially resemblance of other people’s work. The design needs more creativity but is basically satisfactory. 作品原创性高,体现出丰富的想象力与艺术性 | The work is highly original and reflects rich imagination and artistry.
-艺术 | art: 10%
5 10 15 20 25
模型过于简单,或未整理UV、未绘制贴图 | The model is too simple, or UV unwrapping is not accomplished, or no texture is creeated. 模型简单,必要UV整理或贴图绘制工作缺失 | The model is simple, and it lacks necessary UV unwrapping or texture painting. 建模、整理UV、绘制贴图均完成,但存在明显技术缺陷 | Modeling, UV unwrapping and texture painting tasks are accomplished, but there are obvious deficiencies. 建模、整理UV、绘制贴图均完成,无明显问题但艺术性上仍有较大改进空间 | Modeling, UV unwrapping and texture painting tasks are accomplished with out obvious flaws, but it lacks artistry. 模型精致且具有一定复杂度,UV整理得当,贴图精美完备 | The model is elegant and reasonably complex. UV unwrapping is done correctly. Textures are fine and sufficient.
-程序 | programming: 10%
3 6 9 12 15
仅使用默认灯光,或以界面截图作为渲染结果 | The project only uses default lighting, or only screen captures are handed in. 完成简单布光,并通过渲染器得到最终画面,但整体效果粗劣 | The project is simply lit up. The final result is obtained with a renderer, but is inferior in quality. 能体现出作者对于布光的基本理解,画面构图光影效果尚可 | The final result reflects the author’s basic understanding of lighting. The composition and lighting are not bad. 能体现出作者对于光影及渲染效果的推敲,最终画面效果达到网络番剧水平 | The final result shows the author’s sophisticated understanding of lighting and rendering, and is close to the quality of online animation episodes. 游戏体验丰富、完成度高,没有可以被明显感知到的程序缺陷 | The final result is rich in light and shadow, carefully crafted composition, and strong artistry. It is close to the quality of movies.
-展览 | exhibition: 5%
1 3 5
在展览中几乎没有起到作用,展览效果乏善可称 | Played little part in the exhibition, which is not good enough when compared with others. 参与展览方案设计、布展及撤展,展览效果较好 | Participated in the design and implementation of the exhibition and achieved a good result. 积极参与展览方案设计、布展及撤展,展览效果出色 | Actively participated in the design and implementation of the exhibition and achieved a excellent result.
● 期末测试 | final-term test: 30%
-以个人为单位现场完成测试任务 | Complete testing tasks on-site as individuals.
● 知识分享 | bonus for knowledge sharing: ≤10%
-推荐或自选主题,但需与课程相关 | You may choose a proposed topic or propose your own for the knowledge sharing seminar, but it must be related to the course.
-每次分享总加分不超过7分(1人)或10分(多人) | Total bonus points each time amount up to 7 (single speaker) or 10 (multiple speakers).

▼ 期末作业 | Requirements on the Final Project

▲ 期末作业 | Requirements on the Final Project

● 从中国有特色的经典建筑及历史文化遗迹(不包括单纯的自然风光)中寻找创作灵感与素材 | Find inspiration and materials for your creation from characteristic classic Chinese architecture and historical and cultural relics (excluding pure natural sceneries).
● 作品可以是游戏、功能性游戏,或者艺术性、教育性的交互应用 | Your creation may be a game, a serious game, or a artistic or education application.
● 不限视觉风格(2D/3D均可)与类型(解谜、动作、模拟、角色扮演等均可)| There is no limitation on style (2D or 3D) or game genre (PUZ, ACT, SIM, RPG, and etc.).
● 作品须能够顺利运行在电脑、手机、头戴式显示器或其他交互终端之上 | Your creation shall be able to run on computer, mobile phone, HMD, or other interactive terminals.
● 作品的首次完整体验时长控制在15-30分钟 | The first time complete experience of your creation shall last for 15 to 30 minutes.
● 作品以团队合作形式完成,每个团队由4-6位同学构成 | The final project is an assignment for teams, each of which is made up of 4 to 6 students.
● 允许使用第三方素材,但需随附说明 | 3rd-party content is allowed when acknowledged.

▼ 提交要求 | Submission Regulations

▲ 提交要求 | Submission Regulations

● 游戏/交互软件可执行文件或安装包 | A game/interactive application (executable files or installer).
● Unity工程文件夹(删除Library后以7zip最高压缩率压缩)| The Unity project folder compressed into a .7z file (delete the Library sub-folder)
● 结项汇报PPT文件 | The PPT file for the final presentation.
● 工程文件(包含贴图)| The project files including textures.
● 说明文本(.txt格式),包含:作品名称、团队成员、100-200字简介、第三方素材使用说明 | A descriptive file (.txt format) including: title, team members, a brief intro of 100-200 words, acknowledgement of the use of 3rd-party resources.
● 2-3分钟作品宣传影片 (.mp4, 1080p@25fps) | A promotional video (2-3 min, .mp4, 1080p@25fps)
● 3-5分钟理念阐述影片 (.mp4, 1080p@25fps) | A concept intro video (3-5 min, .mp4, 1080p@25fps)
● 游戏创作成果展 | An exhibition of your creation.

课程内容 | Course Content ​

  • 1 Introduction
    • 1.1 learning target
    • 1.2 course content  video
    • 1.3 methods of evaluation  video
  • 2 History and Current Development of Games
    • 2.1 history of digital games  video
    • 2.2 console based dynastic history  video
  • 3 Intro to Game Engine
    • 3.1 origin and concept of game engines  video
    • 3.2 common game development workflow  video
  • 4 Intro to Unity
    • 4.1 advantages of Unity  video
    • 4.2 application fields of Unity  video
  • 5 Get to Know Unity Engine
    • 5.1 concept of render pipeline  video
    • 5.2 practice 1: try to use Unity HDRP
    • 5.3 practice 2: art gallery at night
      • 5.3.1 inspect the raw data  video
      • 5.3.2 create materials with Substance Sampler  video2
      • 5.3.3 step1: model and material setup  video
      • 5.3.4 step2: place artworks  video
      • 5.3.5 step3: use prefabs  video1  video2
      • 5.3.6 step4: use global illumination
        • 5.3.6.1 concpets of GI, AO and lightmapping
      • 5.3.7 step5: reflection probe and planar reflection  video
      • 5.3.8 step6: volume and post-processing effects  video
      • 5.3.9 step7: add colliders and FPS camera  video
      • 5.3.10 step8: polish and publish  video
  • 6 Game Design Theories
    • 6.1 the concept of game and Jesse Schell's panoramic view
    • 6.2 understand game design
      • 6.2.1 game: essential experience, themes, structure, mechanism, story
      • 6.2.2 player: concerntration, empathy, modelling and imagination, motivation, novelty
      • 6.2.3 experience: interest curve
      • 6.2.4 workflow: prototype  video
      • 6.2.5 game designer:mission, requirements  video
    • 6.3 game typology  video
  • 7 Fundamental C# Programming
    • 7.1 scritpting and visual scripting in Unity
    • 7.2 variables and constants in C#  video1  video2
  • 8 Practice3: Guess a Number
    • 8.1 step1: add decorative spaceships
    • 8.2 step2: add particles
      • 8.2.1 Unity knowledge: particle system
    • 8.3 step3: finish GUI
      • 8.3.1 Unity knowledge: UGUI
    • 8.4 step4: input validation
      • 8.4.1 C# knowledge: escape sequence
      • 8.4.2 C# knowledge: operators and priority
      • 8.4.3 C# knowledge: IF statement
      • 8.4.4 C# knowledge: name space and string conversion
    • 8.5 step5: random number
      • 8.5.1 Unity API:Random.Range(), SetActive(), gameObject.activeSelf, component.enabled
    • 8.6 step6: limit number of tries
      • 8.6.1 C# knowledge: link and interpolate strings
      • 8.6.2 C# knowledge: do、while、for loops
      • 8.6.3 C# knowledge: continue and break
      • 8.6.4 C# knowledge: array
        • 8.6.4.1 simple arrays
        • 8.6.4.2 multi-dimensional
        • 8.6.4.3 jagged arrays
    • 8.7 step7: avoid duplicate inputs
    • 8.8 step8: random background
      • 8.8.1 C# knowledge: switch statement
      • 8.8.2 C# knowledge: functions
        • 8.8.2.1 definition & execution
        • 8.8.2.2 output parameters
        • 8.8.2.3 reference parameters
        • 8.8.2.4 parameter array
      • 8.8.3 Unity API: tranfrom.childCount
      • 8.8.4 Unity API: tranfrom.GetChild()
      • 8.8.5 Unity API: Destroy()
      • 8.8.6 Unity API: Instantiate()
  • 9 Practice4: Switch Play
    • 9.1 step1: test algorithm
      • 9.1.1 Unity API: find objects
      • 9.1.2 Unity API: add button response
      • 9.1.3 C# knowledge: explicit type conversion
      • 9.1.4 C# knowledge: convert to integer
      • 9.1.5 C# knowledge: convert to string
    • 9.2 step2: write functions
    • 9.3 step3: finish the GUI
    • 9.4 step4: complete game logics
  • 10 Practice5: Art Gallery (continued)
    • 10.1 step1: terrain
      • 10.1.1 Unity knowledge: use terrain system
    • 10.2 step2: light probes
      • 10.2.1 Unity knowledge: use light probes  video
    • 10.3 step3: animation
      • 10.3.1 Unity knowledge: create and use animation  video
    • 10.4 step4: audio and video
      • 10.4.1 Unity knowledge: import and use audio and video files  video
    • 10.5 step5: GUI
      • 10.5.1 Unity knowledge: create common GUI widgets  video
    • 10.6 step6: physics
      • 10.6.1 Unity knowledge: physical simulation in Unity  video
    • 10.7 step7: particle system
      • 10.7.1 Unity knowledge: standard and VFX graph particles  video
    • 10.8 step8: AI navigation
      • 10.8.1 Unity knowledge: use AI navigation  video
    • 10.9 step9: characters
      • 10.9.1 Unity knowledge: import and use character animation  video
    • 10.10 step10: timeline
      • 10.10.1 Unity knowledge: use timeline to create cinematic clips  video
  • 11 Unity Function Modules
    • 11.1 scene building, asset management, terrain, rendering, scripting, shader development, animation, particle system, physics, 2D, navigation and path finding, user input, audio and video, GUI, profiling, misc
  • 12 Visual Art for Games
    • 12.1 2D art
    • 12.2 3D art
    • 12.3 normal mapping
    • 12.4 modular design strategy
  • 13 Extensive C# Knowledge (1)
    • 13.1 C# knowledge: enumeration
    • 13.2 C# knowledge: implicity typed variables
    • 13.3 C# knowledge: tuples
    • 13.4 C# knowledge: overriding a function
    • 13.5 Unity API: delayed execution
    • 13.6 Unity API: coroutine
    • 13.7 C# knowledge: delegate
    • 13.8 C# knowledge: events
    • 13.9 Unity API: Unity events
    • 13.10 C# knowledge: structure
    • 13.11 IDE knowledge: debugging
    • 13.12 C# knowledge: structured exception handling
  • 14 Practice6: Balloon Shooter
    • 14.1 Object oriented Programming
      • 14.1.1 class, instance, field, property, method
    • 14.2 C# knowledge: class and instance creation
    • 14.3 step1: instantiate balloons
      • 14.3.1 Unity API: set material properties
      • 14.3.2 Unity knoledge: FixedUpdate()
    • 14.4 step2: design moving target class
      • 14.4.1 C# knowledge: basic principles of class planning
      • 14.4.2 C# knowledge: three characteristics of OOP
      • 14.4.3 C# knowledge: class definition and inheritance
      • 14.4.4 C# knowledge: containment of classes and nesting of classes
      • 14.4.5 C# knowledge: field, property, method
      • 14.4.6 C# knowledge: member accessibility
    • 14.5 step3: moving target classs
      • 14.5.1 C# knowledge: constructor and inheritance
      • 14.5.2 C# knowledge: finalizer (destructor)
      • 14.5.3 C# knowledge: method overriding
      • 14.5.4 C# knowledge: polymorphism
      • 14.5.5 C# knowledge: method hiding
    • 14.6 step4: finish the bow controls
    • 14.7 step5: draw curve and arrow shooting
    • 14.8 step6: create hit effect via interface
      • 14.8.1 C# knowledge: interface
      • 14.8.2 C# knowledge: value type and reference type
      • 14.8.3 C# knowledge: boxing and unboxing
      • 14.8.4 C# knowledge: type comparison and conversion
    • 14.9 step7: improve functions and add UI
      • 14.9.1 C# knowledge: static class & member
    • 14.10 step8: use generic list for props
      • 14.10.1 C# knowledge: generic list
      • 14.10.2 C# knowledge: sort a generic list
  • 15 Extensive C# Knowledge (2)
    • 15.1 C# knowledge: array list
    • 15.2 C# knowledge: dictionary as a generic collection
    • 15.3 C# knowledge: conversion of objects
    • 15.4 C# knowledge: copying objects
    • 15.5 C# knowledge: initializer
    • 15.6 C# knowledge: anonymous class
    • 15.7 C# knowledge: anonymous methods and Lamda expressions
    • 15.8 C# knowledge: attributes
  • 16 Intro to Design Pattern
    • 16.1 concept of design pattern
    • 16.2 rules to following in OOP design
    • 16.3 design pattern example: singleton
    • 16.4 design pattern example: state
    • 16.5 summary of the intro to design patterns
  • 17 Intro to Render Pipeline and Shader Development
    • 17.1 how does real-time rendering happen
    • 17.2 types of shaders in Unity
    • 17.3 ways of shader creation in Unity
    • 17.4 shader graph example: model dissolution
    • 17.5 shader graph example: time and space tunnel
    • 17.6 shader learning resources
  • 1 课程简介
    • 1.1 教学目标
    • 1.2 课程内容
    • 1.3 考核要求
  • 2 游戏发展简史及现状
    • 2.1 电子游戏发展史
    • 2.2 基于游戏主机的断代史
  • 3 游戏引擎简介
    • 3.1 游戏引擎的起源及概念
    • 3.2 常见游戏开发流程
  • 4 Unity引擎简介
    • 4.1 Unity的优势
    • 4.2 Unity的应用方向
  • 5 初识Unity
    • 5.1 渲染管线的概念
    • 5.2 实战练习1:试用Unity HDRP
      • 5.2.1 下载安装Unity
      • 5.2.2 Unity工程
      • 5.2.3 Unity编辑器
    • 5.3 实战练习2:艺术馆夜景
      • 5.3.1 检视原始数据
      • 5.3.2 试用Substance Sampler创建材质
      • 5.3.3 第1步:模型与材质设置
      • 5.3.4 第2步:布置艺术品
      • 5.3.5 第3步:运用预制件
      • 5.3.6 第4步:在Unity中运用全局光
        • 5.3.6.1 全局光、环境遮蔽与光照贴图的概念
      • 5.3.7 第5步:反射探针与平面反射
      • 5.3.8 第6步:体积与后处理效果
      • 5.3.9 第7步:碰撞体与FPS相机资产
      • 5.3.10 第8步:最终润色及发布
  • 6 游戏设计理论
    • 6.1 游戏的概念及Jesse Schell的游戏设计全景图
    • 6.2 理解游戏设计
      • 6.2.1 游戏:本质体验、主题、结构、机制、故事
      • 6.2.2 玩家:专注、共情、建模与想象、动机、新奇
      • 6.2.3 体验:兴趣曲线
      • 6.2.4 流程:原型
      • 6.2.5 设计师:使命、要求
    • 6.3 游戏类型学
  • 7 C#程序设计概述
    • 7.1 Unity中的C#脚本及可视化编程
    • 7.2 C#中的变量与常量
  • 8 实战练习3:猜数字
    • 8.1 第1步:添加飞船装饰
    • 8.2 第3步:搭建GUI
      • 8.2.1 Unity知识点:粒子系统
    • 8.3 第2步:添加粒子效果
      • 8.3.1 Unity知识点:UGUI系统
    • 8.4 第4步:输入有效性检查
      • 8.4.1 C#知识点:转义序列
      • 8.4.2 C#知识点:运算符及其优先级
      • 8.4.3 C#知识点:IF语句
      • 8.4.4 其它知识点:名称空间、字符串转换等
    • 8.5 第5步:随机数
      • 8.5.1 Unity API:Random.Range()、SetActive()、物体.activeSelf属性、元件enabled属性等
    • 8.6 第6步:限制尝试次数
      • 8.6.1 C#知识点:连接字符串与字符串内插
      • 8.6.2 C#知识点:do、while、for循环
      • 8.6.3 C#知识点:continue与break命令
      • 8.6.4 C#知识点:数组
        • 8.6.4.1 一维数组
        • 8.6.4.2 多维数组
        • 8.6.4.3 交错数组
    • 8.7 第7步:避免重复输入
    • 8.8 第8步:随机背景
      • 8.8.1 C#知识点:switch语句
      • 8.8.2 C#知识点:函数
        • 8.8.2.1 函数定义及调用
        • 8.8.2.2 输出参数
        • 8.8.2.3 引用参数
        • 8.8.2.4 参数数组
      • 8.8.3 Unity API:tranfrom.childCount
      • 8.8.4 Unity API:tranfrom.GetChild()
      • 8.8.5 Unity API:Destroy()
      • 8.8.6 Unity API:Instantiate()
  • 9 实战练习4:猜数字之换你出题
    • 9.1 第1步:算法测试
      • 9.1.1 Unity API:查找物体
      • 9.1.2 Unity API:按钮响应
      • 9.1.3 C#知识点:强制类型转换
      • 9.1.4 C#知识点:取整
      • 9.1.5 C#知识点:转换为字符串
    • 9.2 第2步:编写函数
    • 9.3 第3步:完成界面
    • 9.4 第4步:完成逻辑
  • 10 实战练习5:艺术馆(续)
    • 10.1 第1步:地形
      • 10.1.1 Unity知识点:使用地形系统
    • 10.2 第2步:光照探针
      • 10.2.1 Unity知识点:使用光照探针
    • 10.3 第3步:动画
      • 10.3.1 Unity知识点:创建并调用基本动画
    • 10.4 第4步:声音与视频
      • 10.4.1 Unity知识点:导入并使用音视频
    • 10.5 第5步:图形用户界面
      • 10.5.1 Unity知识点:创建常用GUI控件
    • 10.6 第6步:物理
      • 10.6.1 Unity知识点:在Unity中运用物理模拟
    • 10.7 第7步:粒子系统
      • 10.7.1 Unity知识点:标准粒子系统与VFX Graph粒子系统
    • 10.8 第8步:AI寻径
      • 10.8.1 Unity知识点:使用AI寻径系统
    • 10.9 第9步:角色
      • 10.9.1 Unity知识点:导入角色并控制动画
    • 10.10 第10步:时间线
      • 10.10.1 Unity知识点:使用Timeline制作影片
  • 11 Unity功能模块概览
    • 11.1 场景搭建、资产管理、地形、渲染、脚本编写、着色器开发、动画、粒子系统、物理、二维、导航与寻径、用户输入、音视频、用户界面、性能调试、其它
  • 12 为游戏制作美术资源
    • 12.1 二维美术
    • 12.2 三维美术
    • 12.3 法线贴图
    • 12.4 模块化设计策略
  • 13 拓展C#知识(1)
    • 13.1 C#知识点:枚举
    • 13.2 C#知识点:隐式类型
    • 13.3 C#知识点:元组
    • 13.4 C#知识点:函数的重载
    • 13.5 Unity API:延迟执行
    • 13.6 Unity API:协程
    • 13.7 C#知识点:委托(代理)
    • 13.8 C#知识点:事件
    • 13.9 Unity API:Unity事件
    • 13.10 C#知识点:结构体
    • 13.11 IDE知识点:纠错
    • 13.12 C#知识点:结构化异常处理
  • 14 实战练习6:打气球
    • 14.1 面向对象的程序设计
      • 14.1.1 类、实例、字段、属性、方法
    • 14.2 C#知识点:类与实例的创建
    • 14.3 第1步:实例化气球
      • 14.3.1 Unity API:设置材质属性
      • 14.3.2 Unity知识点:FixedUpdate()
    • 14.4 第2步:设计运动目标类
      • 14.4.1 C#知识点:类的基本规划原则
      • 14.4.2 C#知识点:OOP三大特征
      • 14.4.3 C#知识点:类的定义与继承
      • 14.4.4 C#知识点:类的包含与嵌套
      • 14.4.5 C#知识点:字段、属性与方法
      • 14.4.6 C#知识点:类成员可访问性
    • 14.5 第3步:完成运动目标类
      • 14.5.1 C#知识点:构造函数及其重载与继承
      • 14.5.2 C#知识点:析构函数
      • 14.5.3 C#知识点:重写方法
      • 14.5.4 C#知识点:多态
      • 14.5.5 C#知识点:隐藏方法
    • 14.6 第4步:完成机械弩控制
    • 14.7 第5步:绘制曲线与射箭
    • 14.8 第6步:基于接口实现被击中
      • 14.8.1 C#知识点:接口
      • 14.8.2 C#知识点:值类型与引用类型
      • 14.8.3 C#知识点:封箱与拆箱
      • 14.8.4 C#知识点:类型比较与转换
    • 14.9 第7步:完善功能、添加GUI
      • 14.9.1 C#知识点:静态成员与静态类
    • 14.10 第8步:利用泛型列表实现道具功能
      • 14.10.1 C#知识点:泛型列表
      • 14.10.2 C#知识点:泛型列表的排序
  • 15 拓展C#知识(2)
    • 15.1 C#知识点:数组列表
    • 15.2 C#知识点:字典
    • 15.3 C#知识点:对象的转换
    • 15.4 C#知识点:对象的复制
    • 15.5 C#知识点:初始化器
    • 15.6 C#知识点:匿名类
    • 15.7 C#知识点:匿名方法与Lamda表达式
    • 15.8 C#知识点:特性
  • 16 设计模式概述
    • 16.1 设计模式的概念
    • 16.2 OOP应遵循的设计原则
    • 16.3 设计模式范例:单例模式
    • 16.4 设计模式范例:状态模式
    • 16.5 设计模式总结
  • 17 渲染管线及着色器入门
    • 17.1 实时渲染是如何发生的
    • 17.2 Unity中的着色器类型
    • 17.3 Unity着色器创建方式
    • 17.4 Shader Graph案例:模型显隐
    • 17.5 Shader Graph案例:时空通道
    • 17.6 Shader学习资源
  • 1 Introduction
    • 1.1 learning target
    • 1.2 course content
    • 1.3 methods of evaluation
  • 2 History and Current Development of Games
    • 2.1 history of digital games
    • 2.2 console based dynastic history
  • 3 Intro to Game Engine
    • 3.1 origin and concept of game engines
    • 3.2 common game development workflow
  • 4 Intro to Unity
    • 4.1 advantages of Unity
    • 4.2 application fields of Unity
  • 5 Get to Know Unity Engine
    • 5.1 concept of render pipeline
    • 5.2 practice 1: try to use Unity HDRP
      • 5.2.1 download and install Unity
      • 5.2.2 Unity projects
      • 5.2.3 Unity editor
    • 5.3 practice 2: art gallery at night
      • 5.3.1 inspect the raw data
      • 5.3.2 create materials with Substance Sampler
      • 5.3.3 step1: model and material setup
      • 5.3.4 step2: place artworks
      • 5.3.5 step3: use prefabs
      • 5.3.6 step4: use global illumination
        • 5.3.6.1 concpets of GI, AO and lightmapping
      • 5.3.7 step5: reflection probe and planar reflection
      • 5.3.8 step6: volume and post-processing effects
      • 5.3.9 step7: add colliders and FPS camera
      • 5.3.10 step8: polish and publish
  • 6 Game Design Theories
    • 6.1 the concept of game and Jesse Schell's panoramic view
    • 6.2 understand game design
      • 6.2.1 game: essential experience, themes, structure, mechanism, story
      • 6.2.2 player: concerntration, empathy, modelling and imagination, motivation, novelty
      • 6.2.3 experience: interest curve
      • 6.2.4 workflow: prototype
      • 6.2.5 game designer:mission, requirements
    • 6.3 game typology
  • 7 Fundamental C# Programming
    • 7.1 scritpting and visual scripting in Unity
    • 7.2 variables and constants in C#
  • 8 Practice3: Guess a Number
    • 8.1 step1: add decorative spaceships
    • 8.2 step2: add particles
      • 8.2.1 Unity knowledge: particle system
    • 8.3 step3: finish GUI
      • 8.3.1 Unity knowledge: UGUI
    • 8.4 step4: input validation
      • 8.4.1 C# knowledge: escape sequence
      • 8.4.2 C# knowledge: operators and priority
      • 8.4.3 C# knowledge: IF statement
      • 8.4.4 C# knowledge: name space and string conversion
    • 8.5 step5: random number
      • 8.5.1 Unity API:Random.Range(), SetActive(), gameObject.activeSelf, component.enabled
    • 8.6 step6: limit number of tries
      • 8.6.1 C# knowledge: link and interpolate strings
      • 8.6.2 C# knowledge: do、while、for loops
      • 8.6.3 C# knowledge: continue and break
      • 8.6.4 C# knowledge: array
        • 8.6.4.1 simple arrays
        • 8.6.4.2 multi-dimensional
        • 8.6.4.3 jagged arrays
    • 8.7 step7: avoid duplicate inputs
    • 8.8 step8: random background
      • 8.8.1 C# knowledge: switch statement
      • 8.8.2 C# knowledge: functions
        • 8.8.2.1 definition & execution
        • 8.8.2.2 output parameters
        • 8.8.2.3 reference parameters
        • 8.8.2.4 parameter array
      • 8.8.3 Unity API: tranfrom.childCount
      • 8.8.4 Unity API: tranfrom.GetChild()
      • 8.8.5 Unity API: Destroy()
      • 8.8.6 Unity API: Instantiate()
  • 9 Practice4: Switch Play
    • 9.1 step1: test algorithm
      • 9.1.1 Unity API: find objects
      • 9.1.2 Unity API: add button response
      • 9.1.3 C# knowledge: explicit type conversion
      • 9.1.4 C# knowledge: convert to integer
      • 9.1.5 C# knowledge: convert to string
    • 9.2 step2: write functions
    • 9.3 step3: finish the GUI
    • 9.4 step4: complete game logics
  • 10 Practice5: Art Gallery (continued)
    • 10.1 step1: terrain
      • 10.1.1 Unity knowledge: use terrain system
    • 10.2 step2: light probes
      • 10.2.1 Unity knowledge: use light probes
    • 10.3 step3: animation
      • 10.3.1 Unity knowledge: create and use animation
    • 10.4 step4: audio and video
      • 10.4.1 Unity knowledge: import and use audio and video files
    • 10.5 step5: GUI
      • 10.5.1 Unity knowledge: create common GUI widgets
    • 10.6 step6: physics
      • 10.6.1 Unity knowledge: physical simulation in Unity
    • 10.7 step7: particle system
      • 10.7.1 Unity knowledge: standard and VFX graph particles
    • 10.8 step8: AI navigation
      • 10.8.1 Unity knowledge: use AI navigation
    • 10.9 step9: characters
      • 10.9.1 Unity knowledge: import and use character animation
    • 10.10 step10: timeline
      • 10.10.1 Unity knowledge: use timeline to create cinematic clips
  • 11 Unity Function Modules
    • 11.1 scene building, asset management, terrain, rendering, scripting, shader development, animation, particle system, physics, 2D, navigation and path finding, user input, audio and video, GUI, profiling, misc
  • 12 Visual Art for Games
    • 12.1 2D art
    • 12.2 3D art
    • 12.3 normal mapping
    • 12.4 modular design strategy
  • 13 Extensive C# Knowledge (1)
    • 13.1 C# knowledge: enumeration
    • 13.2 C# knowledge: implicity typed variables
    • 13.3 C# knowledge: tuples
    • 13.4 C# knowledge: overriding a function
    • 13.5 Unity API: delayed execution
    • 13.6 Unity API: coroutine
    • 13.7 C# knowledge: delegate
    • 13.8 C# knowledge: events
    • 13.9 Unity API: Unity events
    • 13.10 C# knowledge: structure
    • 13.11 IDE knowledge: debugging
    • 13.12 C# knowledge: structured exception handling
  • 14 Practice6: Balloon Shooter
    • 14.1 Object oriented Programming
      • 14.1.1 class, instance, field, property, method
    • 14.2 C# knowledge: class and instance creation
    • 14.3 step1: instantiate balloons
      • 14.3.1 Unity API: set material properties
      • 14.3.2 Unity knoledge: FixedUpdate()
    • 14.4 step2: design moving target class
      • 14.4.1 C# knowledge: basic principles of class planning
      • 14.4.2 C# knowledge: three characteristics of OOP
      • 14.4.3 C# knowledge: class definition and inheritance
      • 14.4.4 C# knowledge: containment of classes and nesting of classes
      • 14.4.5 C# knowledge: field, property, method
      • 14.4.6 C# knowledge: member accessibility
    • 14.5 step3: moving target classs
      • 14.5.1 C# knowledge: constructor and inheritance
      • 14.5.2 C# knowledge: finalizer (destructor)
      • 14.5.3 C# knowledge: method overriding
      • 14.5.4 C# knowledge: polymorphism
      • 14.5.5 C# knowledge: method hiding
    • 14.6 step4: finish the bow controls
    • 14.7 step5: draw curve and arrow shooting
    • 14.8 step6: create hit effect via interface
      • 14.8.1 C# knowledge: interface
      • 14.8.2 C# knowledge: value type and reference type
      • 14.8.3 C# knowledge: boxing and unboxing
      • 14.8.4 C# knowledge: type comparison and conversion
    • 14.9 step7: improve functions and add UI
      • 14.9.1 C# knowledge: static class & member
    • 14.10 step8: use generic list for props
      • 14.10.1 C# knowledge: generic list
      • 14.10.2 C# knowledge: sort a generic list
  • 15 Extensive C# Knowledge (2)
    • 15.1 C# knowledge: array list
    • 15.2 C# knowledge: dictionary as a generic collection
    • 15.3 C# knowledge: conversion of objects
    • 15.4 C# knowledge: copying objects
    • 15.5 C# knowledge: initializer
    • 15.6 C# knowledge: anonymous class
    • 15.7 C# knowledge: anonymous methods and Lamda expressions
    • 15.8 C# knowledge: attributes
  • 16 Intro to Design Pattern
    • 16.1 concept of design pattern
    • 16.2 rules to following in OOP design
    • 16.3 design pattern example: singleton
    • 16.4 design pattern example: state
    • 16.5 summary of the intro to design patterns
  • 17 Intro to Render Pipeline and Shader Development
    • 17.1 how does real-time rendering happen
    • 17.2 types of shaders in Unity
    • 17.3 ways of shader creation in Unity
    • 17.4 shader graph example: model dissolution
    • 17.5 shader graph example: time and space tunnel
    • 17.6 shader learning resources

学习资料 | Learning Materials

课程内容 | course content
▲ 知识学习 | Knowledge Learning
▲ 创作实践 | Creation Practice
成绩构成 | how the final score is given
● 出勤记录 | Attendance: 10%
● 平时成绩 | Usual performance: 20%
– 随堂测试 | In-class quizzes: 5% x 4
● 期末作业+展览 | Final project and exhibition: 50%
– 游戏设计方案 | Game design: 10%
– 美术+程序品质及完成度 | Art + programming quality and completeness: 15% + 15%
– 展览 | Exhibition: 10%
● 期末现场考题 | Final-term test: 20%
– 基础考题+美术/程序专属考题 | Basic questions + art/programming exclusives: 10% + 10%
● 知识分享 | Knowledge sharing: ≤10%
期末创作要求 | requirements on the final creation project
● 以5人团队为单位完成期末创作 | You are expected to work in 5-people teams to finish the final creation projects.
● 选题方向由企业合作方提供 | The corporate partner will provide the direction of creation.
● 具体主题、形式与内容由创作团队决定 | The student teams decide on their own topics, forms and contents.
● 游戏/严肃游戏/交互叙事/交互艺术等形式均可 | You may choose to create games, serious games, interactive narratives, interactive arts and etc.
● 需兼顾创造性、艺术性、技术性与可实现性 | You need to take into consideration creativity, aesthetics, technology and feasibility.
● 允许使用第三方素材,但需随附说明 | 3rf-party content is allowed, but you must state its usage.
期末须提交的内容 | documents to submit at the end of the semester
● 游戏/交互软件可执行文件或安装包 | A game/interaction application (executable files or installer)
● Unity工程文件夹(删除Library后以7zip最高压缩率压缩)| Unity project folder (delete the Library sub-folder, 7zip, highest compression ratio)
● 结项汇报PPT文件 | PPT file for conclusive presentation
● 2-3分钟作品宣传影片 (.mp4, 1080p@25fps) | A trailer video (2-3 minutes, .mp4 format, 1080p@25fps)
● 3-5分钟理念阐述影片 (.mp4, 1080p@25fps) | A concept introduction video (3-5 minutes, .mp4 format, 1080p@25fps)
课件中的图片/影片高清版 | high-res images/videos from the lecture slides
游戏主机发展断代史 | generations of game consoles
参考资料来源 | Reference

https://en.wikipedia.org/wiki/Video_game_console

全球游戏市场报告 | global games market report
参考资料来源 | Reference
https://newzoo.com/
游戏引擎发展历史 | the history of game engines
id Software引擎发展史 | the history of id Software engines
▲ 第1部分 | Part 1
▲ 第2部分 | Part 2
▲ 第3部分 | Part 3
▲ 第4部分 | Part 4
▲ 第5部分 | Part 5
Unity引擎发展历史 | a history of the Unity game engine
参考资料来源 | Reference
https://web.wpi.edu/Pubs/E-project/Available/E-project-030614-143124/unrestricted/Haas_IQP_Final.pdf
CUSGA2022决赛入围作品混剪 |
a mix of the finalists for CUSGA2022
2024年数字动画与数字娱乐实验室作品混剪 |
a games showreel from the DAElab 2024
影视与动画《抗生素》|
films & animations: Antibiotics
影视与动画《加州旅馆》|
films & animations: Hotel California
XR体验《三三零》| XR experience: 330
XR体验《折叠》| XR experience: FOLD
XR体验《次要任务》| XR experience: Secondary Mission
XR体验《次要任务》| XR experience: Secondary Mission
XR体验《海底两万里》|
XR experience: 20000 milse under water
交互艺术《设计交响》|
XR experience: Design Symphony
交互艺术《分身·源起》|
XR experience: Avatar Mythology
严肃游戏《VR电影训练营》|
serious games: VR Film School
严肃游戏《Monolith》 | serious games: Monolith
可视化与仿真《快艇及战斗机沉浸式模拟体验》|
visualization and simulation: Speed Boad & Jet Fighter Sim.
可视化与仿真《飞鲨出击》|
visualization and simulation: The Strike of Flying Sharks
商用软件《长城集团海外销售工具》|
commercial app: The Oversea Sales Tool for Great Wall Corp.
课件中的图片/影片高清版 | high-res images/videos from the lecture slides
Unity引擎下载地址 | Unity Engine installer
团结引擎下载地址 | Tuanjie Engine installer
艺术馆练习原始文件 | raw data for the gallery exercise
第三方素材来源 | sources of 3rd-party content
Statue Models:
https://assetstore.unity.com/packages/3d/props/bronze-bear-statue-65904
https://assetstore.unity.com/packages/3d/props/discobolus-statue-107544
https://assetstore.unity.com/packages/3d/dragon-statue-59053
https://assetstore.unity.com/packages/3d/props/interior/golden-dragon-statue-63132
https://assetstore.unity.com/packages/3d/environments/fantasy/horse-statue-52025
https://assetstore.unity.com/packages/3d/props/exterior/hq-lion-statue-50736
https://assetstore.unity.com/packages/3d/props/exterior/lion-statue-34247
https://assetstore.unity.com/packages/3d/nefertiti-56818
https://assetstore.unity.com/packages/3d/props/queen-victoria-bronze-bust-statue-prop-129905

Music:
https://freepd.com/romantic.php

Mini first person controller:
https://assetstore.unity.com/packages/tools/input-management/mini-first-person-controller-174710

Substance 3D for Unity:
https://assetstore.unity.com/packages/tools/utilities/substance-3d-for-unity-213208

Substance Material:
https://substance3d.adobe.com/community-assets/assets/be8c895f6ebcefeb7a8af0fb37ce3c8cce2134d7
https://substance3d.adobe.com/community-assets/assets/ed308b8f9037c60f13ba7e91d4dbb82140116c4f
https://substance3d.adobe.com/community-assets/assets/a4d374705d893449950febb0c6463e0e265e137f

Skybox Texture:
http://www.zfight.com/misc/images/textures/envmaps/grimmnight_large.jpg
...
艺术馆练习最终发布版本 | final builds of the gallery exercise
课件中的图片/影片高清版 | high-res images/videos from the lecture slides
游戏类型学 | genres of games
游戏设计理论参考书目 | reference books on game design theories
《游戏设计艺术》 | The Art of Game Design
杰西·谢尔著,电子工业出版社,2021年5月第三版,ISBN:9787121409271 |
by Jesse Schell, Publishing House of Electronics Industry, 3rd edition, May 2021
《体验引擎:游戏设计全景揭秘》 | Designing Games: A Guide to Engineering Experiences
泰南·西尔维斯特著,电子工业出版社,2015年3月第一版,ISBN:9787121253799 |
by Tynan Sylvester, Publishing House of Electronics Industry, 1st edition, March 2015
《通关!游戏设计之道》 | Level Up! The Guide to Greate Video Game Design
斯科特·罗杰斯著,人民邮电出版社,2016年11月第二版,ISBN:9787115431776 |
by Scott Rogers, The People’s Posts and Telecomm Press, 2nd edition, 2019 November
《游戏设计梦工厂》 | Game Design Workshop
特雷西·富勒顿著,电子工业出版社,2022年6月第四版,ISBN:9787121433481 |
by Tracy Fullerton, Publishing House of Electronics Industry, 4th edition, June 2022
《妙趣横生的游戏制作之旅》 | A Playful Production Process: For Game Designers
理查德·雷马卡德著,电子工业出版社,2022年8月第一版,ISBN:9787121440953 |
by Richard Lemarchand, Publishing House of Electronics Industry, 1st edition, August 2022
《游戏设计进阶:一种系统方法》 | Advanced Game Design: A Systems Approach
迈克尔·塞勒斯著,电子工业出版社,2019年7月第一版,ISBN:9787121366642 |
by Michael Sellers, Publishing House of Electronics Industry, 1st edition, July 2019
《游戏剧本怎么写》 | Screen Writing for Games
佐佐木智广著,人民邮电出版社,2018年8月第一版,ISBN:9787115484338 |
by Tomohiro Sasaki, The People’s Posts and Telecomm Press, 1st edition, August 2018
《游戏感:游戏操控感和体验设计指南》 | Game Feel: A Game Designer’s Guide to Virtual Sensation
史蒂夫· 斯温克著,电子工业出版社,2020年4月第一版,ISBN:9787121363245 |
by Steve Swink, Publishing House of Electronics Industry, 1st edition, April 2020
《平衡掌控者:游戏数值战斗设计》 | Balance: Design Battle Parameters for Games
似水无痕著,电子工业出版社,2017年5月第一版,ISBN:9787121312397 |
by Si Shui Wu Hen, Publishing House of Electronics Industry, 1st edition, May 2017
《平衡掌控者:游戏数值经济设计》 | Balance: Design Economy Systems for Games
似水无痕著,电子工业出版社,2020年9月第一版,ISBN:9787121393631 |
by Si Shui Wu Hen, Publishing House of Electronics Industry, 1st edition, September 2020
如何使用VS Code | how to use VS Code
Mono v.s. IL2CPP | how to use VS Code
可视化编程 | Visual Scripting
C#中的变量类型 | Types of Variables in C#
变量类型 | Variable Type 取值范围 | Value Range 长度 | Length
sbyte (带符号字节型)
-128 ~ 127
1 byte, 28 bits
byte(字节型)
0 ~ 255
1 byte, 28 bits
short(短整型)
-32768 ~ 32767
2 bytes, 216 bits
ushort(无符号短整型)
0 ~ 65535
2 bytes, 216 bits
int(整型)
-2147483648 ~ 2147483647
4 bytes, 232 bits
uint(无符号整型)
0 ~ 4294967295
4 bytes, 232 bits
long(长整型)
-9223372036854775808 ~ 9223372036854775807
8 bytes, 264 bits
ulong(无符号整型)
0 ~ 18446744073709551615
8 bytes, 264 bits
float(单精度浮点型)
形式 | form: ±m×2e,m=0~224,e=-149~104
范围 | range: 0∪±(1.5×10-45 ~ 3.4×1038),有效数字 | sig. digits = 7
4 bytes, 232 bits
double(双精度浮点型)
形式 | form: ±m×2e,m=0~253,e=-1075~970
范围 | range: 0∪±(5.0×10-324 ~ 1.7×10308),有效数字 | sig. digits = 15 ~ 16
8 bytes, 264 bits
decimal(十进制型)
形式 | form: (-1)s × c×10-e,s∈{0,1},c=0~296,e=0~28
范围 | range: 0∪±(1.0×10-28 ~ 7.9×1028),有效数字 | sig. digits = 28-29
16 bytes, 2128 bits
bool(布尔型)
true / false
1 byte, 28 bits
char(字符型)
0 ~ 65535之间的Unicode字符 | a Unicode char between 0 and 65535
2 bytes, 216 bits
string(字符串型)
一组字符 | a series of chars
不限 | unlimited
字面值 | Literals
变量类型 | Var. Type 数据类型 | Data Type 后缀 | Suffix 范例 | Example 备注 | Memo
bool
布尔量 | Boolean
无 | null
true / false
int, uint, long, ulong
整数 | integer
无 | null
100
使用前缀0x或0X表示十六进制数 |
Use prefix 0x or 0X for hexadecimal numbers.

使用前缀0b或0B表示二进制数 |
Use prefix 0b or 0B for binary numbers.
uint, ulong
整数 | integer
u / U
100U
long, ulong
整数 | integer
l / L
100L
ulong
整数 | integer
ul / uL / Ul / UL / lu / lU / Lu / LU
100UL
float
实数 | real number
f / F
1.5f
double
实数 | real number
无,d 或 D | null, d or D
1.5
decimal
实数 | real number
m / M
1.5M
char
字符 | character
无 | null
‘a’
可包括转义序列 |may include escape sequences
string
字符串 | string
无 | null
“This”

学习任务 | Learning Tasks​

课程学前调研 | pre-course survey
访问以此链接完成课程学前调研问卷 |
Fill in the pre-course survey questionnaire using this link.
复习 | review
使用“学习资料 → 02. 游戏发展简史及现状”完成复习并自学课上未详细展开的内容 |
Use the content in “Learning Materials → 03. An Introduction to ZBrush” to review and self-study the content not elaborated in class.
复习与自学 | review and self-study
使用“学习资料 → 03. ZBrush简介”复习并自学课上未详细展开的内容 |
Use the content in “Learning Materials → 03. An Introduction to ZBrush” to review and self-study the content not elaborated in class.
复习与自学 | review and self-study
使用“学习资料 → 03. ZBrush简介”复习并自学课上未详细展开的内容 |
Use the content in “Learning Materials → 03. An Introduction to ZBrush” to review and self-study the content not elaborated in class.
国庆假日 | National Day Holiday
修改设计方案 | Design Revision
根据任课教师反馈意见修改设计方案 | Revise the design based on feedback from the teacher.

课程成果 | Learning Outcomes

待本学期课程结束后提供 | To be provided after the course of this semester is over.