Note on Introduction to Game Design, Prototyping, and Development
像游戏设计师一样思考游戏的定义不同大神的定义:
Sid Merier:游戏是一系列有趣的选择
玩家有多个可行的选择
每个选择皆有利弊,难以取舍
每个选择的结果在某种程度上都是可预测的但并不绝对
游戏的平衡性并不代表绝对公平,而是追求一种感性的平衡。如果玩家掌握了最优解,会导致游戏寿命迅速缩减。
Trracy Fullerton:游戏是一个闭合且规范的(动态)系统,玩家参与到结构化的冲突当中,以不平衡的结局消解系统的不确定性
游戏的形式元素:规则、步骤、玩家、资源、目标、限制、冲突、结局
动态系统:随着游戏进行而进化的交互方式
冲突结构:玩家与其他人交互的方式
不确定性:随机性、确定性和玩家策略间的相互作用
不平衡的结局:游戏结束的方式,玩家的输赢
Jesse Schell:游戏是一种以娱乐的态度解决问题的活动
Keith Burgun:玩家通过做出模糊和自发的重要决定对抗一套规则体系
自我定义:游戏是设计师向玩家传递情感体验的媒介。开发者通过把规则具像化形成游戏,玩家在游玩游戏的过程中会产生情感体验。
认清游戏的定义的意义:
帮助游戏设计师理解人们玩游戏的动机
帮 ...
Note on SQL
概述数据库A Database is a collection of data stored in a format that can easily be accessed.
数据库管理系统为了管理数据库,我们要使用数据库管理系统(Database Management System,简称 DBMS)。
我们通过电脑连接上 DBMS,然后通过指令来查询或修改数据。DBMS 将执行指令并返回结果。
DBMS 被分为两大类,Relational 和 Non-Relational,后者又称为 NoSQL。
关系型数据库管理系统在 Relational DBMS(简称 RDBMS) 中,数据被存储在通过某种方式互相联系的表格中。
每个表格存储特定类型对象的数据,比如客户、订单、产品。
SQL(Structured Query Language)是我们用来处理关系数据库的语言。
MySQL 是最出名的 RDBMS,此外还有 SQL Server 和 Oracle 等。
不同的 DBMS 有不同的风格,但它们的实现都类似,且都基于标准 SQL 规范。
非关系型数据库管理系统在非关系型数据库管理系统 ...
Note on Markdown
常用技巧字体1<span style='color:文字颜色;background:背景颜色;font-size:文字大小;font-family:字体;'>文字</span>
分页符1<div style="page-break-after:always"></div>
Note on Regular Expression
常用符号?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用\?
used? 可以匹配到 “use” 或者 “used”
*匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*
ab*c 可以匹配到 “ac”, “abc”, “abbbbc” 等
+匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
ab+c 可以匹配到 “abc”, “abbbbc” 等
如果要精确指示字符出现的次数,可以使用花括号
ab{3}c 只会匹配到 “abbbc”
ab{2,6}c 会匹配到 “abbc”, “abbbc”, “abbbbc”, “abbbbbc”, “abbbbbbc”
ab{2,}c 会匹配到 “abbc”, “abbbc” 等 “b” 出现次数大于等于 2 的字符
( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)
或运算| 指明两项之间的一个选择。要匹配 |,请使用 \|
a (cat|dog) 会匹配到 “a cat” 和 ...
Java: Excutive Framework
Intro在线程的基础上,Java 引入了更高级别的抽象来简化构建并发型应用程序的过程。
通过这些抽象,我们不需要显式地处理线程,只需要专注于我们的任务,让 Java 来处理线程操作。
Thread Pools线程是构建并发程序模块的基础,但是直接使用线程有两个问题:
Availability:我们可以使用的线程数量有限,如果不小心创建了过多的线程,程序就会崩溃
Cost:创建一个独立的线程的开销很大
Java 为了解决开销大的问题,提出了一种称为线程池的解决方案。
线程池本质上就是一池子线程,这个池子里的线程被称为 Worker Thread,这些线程可以被多次使用,从而一个线程就可以执行多次任务。如果一个工作线程的任务完成了,它就会被放回线程池,这样就可以重新用它来执行另一个任务。所以这些线程没有被销毁和重新创建,从而能减小开销。
同时,因为线程池中的线程数量是一定的,所以我们不必担心创建了太多的线程,以至于内存不够用。
比如说,我们可以创建一个有 10 个线程的线程池,再给这个线程池分配 1000 个任务,那线程池就会负责给每个线程分配任务。如果所有的线程都在执行任务,那新的 ...