阿凡达1电影算号器84F30A99BAAA3A5D257612777CF2D8B6这个是我的代码,求算

『Future RnB』未来的R&B - 歌单 - 网易云音乐
『Future RnB』未来的R&B
≡ ≡ ≡ ≡ ≡ ≡ ≡ Future RnB ≡ ≡ ≡ ≡ ≡ ≡ Chil ≡ ≡ ≡ ≡ ≡ ≡
播放:4589次
喜欢这个歌单的人
网易云音乐多端下载
同步歌单,随时畅听320k好音乐
网易公司版权所有(C)杭州乐读科技有限公司运营:&p&在开发过程中,字符编码始终是程序猿和程序媛们绕不开的一个话题。这里针对题主的问题和@&a href=&https://www.zhihu.com/people/yangsen& class=&internal&&杨森&/a&的建议,简要整理下有关字符编码的知识,供列位看官茶余饭后消遣:)&/p&&br&&br&&p&本回答尽量直观地介绍相关概念,不纠缠相关规定的细节,以使读者能对字符编码有着更直观的理解。当然,这样很容易挂一漏万,难免出现纰漏,也望各位批评指正。&/p&&br&&br&&p&众所周知,在计算机的世界,所有的信息都是0/1组合的二进制序列,计算机是无法直接识别和存储字符的。因此,&b&字符必须经过编码才能被计算机处理&/b&。字符编码是计算机技术的基础,也是程序猿/媛需要的基本功之一。&/p&&br&&br&&p&在展开具体介绍之前,首先要强调一下几个概念,这对理解字符编码非常重要,也将贯穿在后文的介绍之中:&/p&&br&&br&&p&1)
&br&理解&b&字符集&/b&和&b&字符编码&/b&的区别&/p&&br&&p&2)
&br&“系统/终端/文件/程序”不同概念上的编码&/p&&br&&p&3)
&br&常见操作系统、文本编辑器对字符编码的处理&/p&&br&&br&&b&1 、字符集与字符编码&/b&&br&&br&&p&如前所述,字符只有按照一定规则编码,最终表示为0/1二进制序列的形式,才能被计算机处理。那么,怎么定义这种编码映射呢?其实很简单,只要大家都按照相同的规则,规定好字符与二进制序列(表现为某个数值)之间的对应关系即可。比如,我们规定英语大写字母A对应数字65,那么我们只要将65的二进制形式(&a href=&tel:000001&/a&)保存即可。&/p&&br&&br&&p&那么,问题又来了。如果大家使用的规则不一致怎么办,那岂不全乱套了?这时候,&b&字符集&/b&就粉墨登场了。所谓字符集,直观上讲,就是人们统计预先规定好的一系列字符与二进制序列(数字)之间的映射关系。只要大家都遵循这个规则,并且计算机也按照这种方式处理,那么这个世界不就很美好了!然而,全世界的语言实在太多了,由于历史和地域的原因,也就形成了多套应用于不同场合、语言的字符集,如ASCII、GBK、Unicode等。&/p&&br&&br&&p&需要注意的是,我们规定好了字符与数字之间的对应关系,但这并不代表计算机一定要按照字符对应的数字将数字本身直接存储!有时候,我们按照一定的规则,将字符的码元再次处理,以更加适应计算机存储、网络传输的需要。&b&字符编码&/b&便是规定了如何编码、存储这些字符对应的二进制序列。&/p&&br&&br&&p&因此,某种意义上,可以理解为,&b&字符集是一种协议,而字符编码是对字符集的一种实现&/b&。当然,既然称之为“实现”,也说明对同一种字符集可能有不同的编码方式。可以想到,最直接的编码方式,便是直接使用字符对应的二进制序列,这就导致了字符集和字符编码看起来像是一个东东,长期受此思维影响,可能就会对Unicode和UTF的区别有些困惑。&/p&&br&&br&&b&2 、祖先:ASCII编码&/b&&br&&br&&br&&p&再次回顾,在计算机内部,所有的信息最终都表示为一个二进制的序列。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256(2^8)种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态可以对应一个符号,就是256个符号,从到。&/p&&br&&br&&p&上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,这就是ASCII(American Standard&br&Code for Information Interchange,美国信息交换标准代码),一直沿用至今。&/p&&br&&p&ASCII码一共规定了128个字符的编码,包含常见的英语字符和一些控制符号。比如空格(Space)对应32(二进制),大写字母A对应65(二进制)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0,没有使用。&/p&&br&&p&需要强调的是,ASCII便是字符集与字符编码相同的情况,直接将字符对应的8位二进制数作为最终形式存储。因此,&b&当我们提及&/b&&b&ASCII&/b&&b&,既表示了一种字符集,也代表了一种字符编码&/b&,即常说的“ASCII编码”。&/p&&br&&p&ASCII表如下图所示。&/p&&figure&&img src=&https://pic1.zhimg.com/bd3b6c7e4f432b6dfbfcd14_b.png& data-rawwidth=&535& data-rawheight=&377& class=&origin_image zh-lightbox-thumb& width=&535& data-original=&https://pic1.zhimg.com/bd3b6c7e4f432b6dfbfcd14_r.png&&&/figure&&p&图&br&1 ASCII编码表(摘自百度)&/p&&br&&br&&b&3 、扩展:扩展ASCII&/b&&br&&br&&br&&p&英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。同时,1byte中我们不是还有最高位没有使用么?这能够再编码128个符号啊!于是,一些欧洲国家就决定,利用闲置的最高位编入新的符号。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。从128到255这些字符集被称“&b&扩展字符集&/b&”。基于此,ISO 组织在ASCII码基础上又制定了一系列标准用来扩展ASCII编码,它们是ISO-8859-1~ISO-8859-15,其中ISO-8859-1(又称Latin-1)涵盖了大多数西欧语言字符,所有应用的最广泛。ISO-8859-1仍然是单字节编码,它总共能表示256个字符。&/p&&br&&br&&p&但是,问题又来了。。。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。但是不管怎样,所有这些编码方式中,0-127表示的符号是一样的,不一样的只是多了128-255的这一段,因此它们都向下兼容ASCII编码。&/p&&p&同样,对于扩展ASCII,它也是既表示了字符集,也代表一种字符编码。&/p&&br&&br&&b&4 、中文:GB系列&/b&&br&&br&&br&&p&字符型语言的字符数量较少,因此用一个byte(8bit)基本就够用了,这就难为了我们博大精深的中文汉字——中文常用字就有好几千呢!但这也难不倒我们勤劳勇敢的中国人,为此,我们设计了GB2312字符集,意气风发走进那新时代。&/p&&br&&br&&p&GB2312的思想其实很简单——既然1个byte不够用,那咱们用2个呀!正所谓,“没有1byte解决不了的问题,如果有,就2byte”。理论上,2个字节便可以表示2^16=65536的字符。不过,GB2312最初被设计时,只规定了中文常见字,很多特殊字符还没有包含。GB2312一共收录了7445个字符,包括6763个汉字和682个其它符号。除了GB2312,还有用于中文繁体的Big5。&/p&&br&&br&&p&人们逐渐发现,GB2312规定的字符太少,甚至有些国家领导人名字中的汉字都表示不出来,这还了得!于是1995年的汉字扩展规范GBK1.0(《汉字内码扩展规范》)收录了21886个符号,它分为汉字区和图形符号区。&b&GBK&/b&&b&编码是&/b&&b&GB2312&/b&&b&编码的超集,向下完全兼容&/b&&b&GB2312&/b&,同时GBK收录了Unicode基本多文种平面中的所有CJK汉字。GBK还收录了GB2312不包含的汉字部首符号、竖排标点符号等字符。&/p&&br&&br&&p&2000年的GB18030是取代GBK1.0的正式国家标准。&b&GB18030&/b&&b&编码向下兼容&/b&&b&GBK&/b&&b&和&/b&&b&GB2312&/b&。&br&GB18030收录了所有Unicode3.1中的字符,包括中国少数民族字符。GB18030虽然是国家标准,但是实际应用系统中使用的并不广泛。目前使用最广的仍是GBK编码。&/p&&br&&br&&p&GBK和GB2312都是双字节等宽编码,如果算上为与ASCII兼容所支持的单字节,也可以理解为是单字节和双字节混合的变长编码。GB18030编码是变长编码,采用单字节、双字节和4字节方案,其中单字节、双字节和GBK是完全兼容的,4字节编码的码位就是收录了CJK扩展A的6582个汉字。&/p&&br&&br&&p&&b&从&/b&&b&ASCII&/b&&b&、&/b&&b&GB2312&/b&&b&、&/b&&b&GBK&/b&&b&到&/b&&b&GB18030&/b&&b&,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。&/b&在这些编码中,英文和中文可以统一地处理,区分中文编码的方法是高字节的最高位不为0。GB2312、GBK都属于双字节字符集 (DBCS)。&/p&&br&&br&&p&最后,不严格的说,GB系列编码也可以认为是具有字符集的意义,又有字符编码的意义。实际上,GB系列编码中有“&b&区位码&/b&”的概念(由于采用两个数来编码汉字和中文符号。第一个数称为“区”,第二个数称为“位”,所以也称为区位码),实际上, 区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312是实际计算机环境中支持这种字符集的编码。区位码和GB2312编码的关系有点像 Unicode和UTF-8,正是最开始介绍的字符集与字符编码的区分。&/p&&br&&br&&b&5、
统一:Unicode&/b&&br&&br&&br&&p&介绍完ASCII、Latin和GBK,想必各位会有这样的想法:为什么不规定一种字符集、编码方式,直接能够囊括全世界所有语言文字的符号呢?&/p&&br&&br&&p&由于科技发展不同步等历史原因,多种编码方式并存是不可避免的现象,但大一统的工作实际上人们也在做,这就是大名鼎鼎的Unicode。&/p&&br&&br&&p&这里面也有段有趣的历史。实际上,最早是由两个独立的组织都在设计一种通用字符集,但两家很快意识到,这个世界并不需要两套不同的通用字符集存在,否则所谓的“通用”便失去了意义。于是,后期的Unicode工作被有组织的统一了起来。&/p&&br&&br&&p&Unicode是为了整合全世界的所有语言文字而诞生的,全称是Universal&br&Multiple-Octet Coded Character Set,它所规定的字符集也被称为Universal Character Set (UCS)。&/p&&p&再次提醒,&b&Unicode&/b&&b&只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储&/b&。也即,UCS规定了怎么用多个字节表示各种文字,而怎样存储、传输这些编码,则是由UTF (UCS&br&Transformation Format)规范规定的。UTF会在后文介绍。&/p&&br&&br&&b&5.1
UCS&/b&&br&&br&&br&&p&UCS有两种不同的规定版本:UCS-2和UCS-4。顾名思义,UCS-2就是用2个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。因此,UCS-2有2^16=65536个码位,UCS-4有2^31=&a href=&tel:&&&/a&个码位。目前UCS-2已经足够用了,UCS-4估计都可以把Asgard和氪星的文字(传说都是英语?)也收录进来了……具体的符号对应表,可以查询&a href=&//link.zhihu.com/?target=http%3A//unicode.org& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&unicode.org&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,或者相关的字符对应表。&/p&&p&UCS-4根据最高位为0的最高字节分成&img src=&//www.zhihu.com/equation?tex=2%5E%7B7%7D+& alt=&2^{7} & eeimg=&1&&=128个Group,每个Group再根据次高字节分为256个Plane,每个Plane根据第3个字节分为256行 (Rows),每行包含256个Cells。同一行的Cells只是最后一个字节不同,其余都相同。&/p&&br&&figure&&img src=&https://pic4.zhimg.com/e372ce8d8d819bc20b72db_b.png& data-rawwidth=&577& data-rawheight=&43& class=&origin_image zh-lightbox-thumb& width=&577& data-original=&https://pic4.zhimg.com/e372ce8d8d819bc20b72db_r.png&&&/figure&&br&&br&&p&其中,Group 0的Plane 0被称作Basic Multilingual&br&Plane,即BMP,或者说UCS-4中,高两个字节为0的码位被称作BMP。将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。&/p&&br&&br&&p&那么,新的问题又来了:&/p&&br&&br&&p&1)
&br&如何才能区别Unicode和ASCII?计算机怎么知道2个字节表示1个符号,而不是分别表示2个符号呢?&/p&&br&&p&2)
&br&我们已经知道,英文字母只用1个字节表示就够了(ASCII),如果Unicode统一规定,每个符号用2个或4个字节表示,那么每个英文字母前都必然有许多字节是0,这对于存储来说是极大的浪费,是无法接受的。&/p&&br&&br&&p&这些问题造成的结果是:&/p&&br&&p&1)
&br&出现了Unicode的多种存储方式,也就是说有许多种不同的格式,可以用来表示Unicode。&/p&&br&&p&2)
&br&Unicode在很长一段时间内无法推广,直到互联网(UTF-8)的出现。&/p&&br&&br&&b&5.2
UTF&/b&&br&&br&&br&&p&UTF(Unicode/UCS&br&Transformation Format),即Unicode字符集的编码标准,可以理解为对Unicode字符集的具体使用/实现方式,主要有UTF-16、UTF-32和UTF-8。&/p&&br&&br&&b&UTF-16&/b&&br&&br&&br&&p&UTF-16由RFC2781协议规定,它使用2个字节来表示1个字符。不难猜到,UTF-16是完全对应于UCS-2的(实际上稍有区别),即把UCS-2规定的代码点通过Big Endian(下文介绍)或Little Endian方式直接保存下来。UTF-16包括三种:UTF-16,UTF-16BE(Big Endian),UTF-16LE(Little Endian)。&/p&&p&UTF-16BE和UTF-16LE不难理解,而UTF-16就需要通过在文件开头以名为&b&BOM&/b&(Byte Order Mark,下文介绍)的字符来表明文件是Big Endian还是Little Endian。BOM为\uFEFF这个字符。其实BOM是个小聪明的想法。由于UCS-2没有定义\uFFFE,因此只要出现 FF FE 或者 FE FF 这样的字节序列,就可以认为它是\uFEFF,并且据此判断出是Big Endian还是Little Endian。&/p&&br&&br&&p&例:“ABC”这三个字符用各种方式编码后的结果如下:&/p&&br&&br&&figure&&img src=&https://pic4.zhimg.com/fb3a32debbdddc0d0a5fc73_b.png& data-rawwidth=&779& data-rawheight=&156& class=&origin_image zh-lightbox-thumb& width=&779& data-original=&https://pic4.zhimg.com/fb3a32debbdddc0d0a5fc73_r.png&&&/figure&&br&&br&&p&另外,UTF-16还能表示一部分的UCS-4字符——\u10000~\u10FFFF,表示算法就不再详细介绍了。&/p&&p&总结来说,UTF-16以2、4字节存储一个Unicode编码,对于小于0x10000的UCS码,UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码,定义了一个算法。不过由于实际使用的UCS2,或者UCS4的BMP必然小于0x10000,所以就目前而言,&b&可以认为&/b&&b&UTF-16&/b&&b&和&/b&&b&UCS-2&/b&&b&基本相同(前提是明白&/b&&b&UTF&/b&&b&和&/b&&b&UCS&/b&&b&的差别)&/b&。&/p&&br&&br&&b&UTF-32&/b&&br&&br&&br&&p&UTF-32用4个字节表示字符,这样就可以完全表示UCS-4的所有字符,而无需像UTF-16那样使用复杂的算法。与UTF-16类似,UTF-32也包括UTF-32、UTF-32BE、UTF-32LE三种编码,UTF-32也同样需要BOM字符。仍以“ABC”为例:&/p&&br&&br&&figure&&img src=&https://pic1.zhimg.com/45a04caff6adab07f3ae0_b.png& data-rawwidth=&671& data-rawheight=&137& class=&origin_image zh-lightbox-thumb& width=&671& data-original=&https://pic1.zhimg.com/45a04caff6adab07f3ae0_r.png&&&/figure&&br&&br&&p&UTF-16和UTF-32的一个缺点就是它们固定使用2个或3个字节,这样在表示纯ASCII文件时会有很多零字节,造成浪费。RFC3629定义的UTF-8则解决了这个问题,下面介绍UTF-8。&/p&&br&&br&&b&UTF-8&br&&/b&&br&&br&&p&随着互联网的普及,强烈要求出现一种统一的编码方式,UTF-8就是在互联网上使用最广的一种Unicode的实现(传输)方式。&/p&&p&UTF-8最大的一个特点,就是它是一种&b&变长的编码方式&/b&。它可以使用1-4个字节表示一个符号,根据不同的符号而变化字节长度。为什么采用边长的机制,实际上和字符出现的概率分布有关,其中蕴含着Huffman编码的思想——最常出现的字符编码尽量的短。&/p&&br&&br&&p&UTF-8的编码规则很简单,如下:&/p&&br&&br&&p&1)
对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。&/p&&br&&p&2)
对于n字节的符号(n&1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的Unicode码。&/p&&br&&br&&p&下表总结了编码规则,字母x表示可用编码的位。&/p&&br&&figure&&img src=&https://pic4.zhimg.com/bbed044dfd27_b.png& data-rawwidth=&672& data-rawheight=&163& class=&origin_image zh-lightbox-thumb& width=&672& data-original=&https://pic4.zhimg.com/bbed044dfd27_r.png&&&/figure&&br&&br&&br&&p&可见,ASCII字符(\u0000~\u007F)部分完全使用一个字节,避免了存储空间的浪费,而且UTF-8可以不再需要BOM字节。&/p&&br&&br&&p&另外,从上表中可以看出,单字节编码的第一字节为00-7F,双字节编码的第一字节为C2-DF,三字节编码的第一字节为E0-EF,这样只要看到第一个字节的范围就可以知道编码的字节数,可以大大简化算法(感兴趣的话可以自己实现编码、解码的算法)。&/p&&br&&br&&p&例:以汉字“严”为例。&/p&&p&已知“严”的Unicode(UCS-2)码是\u4E25(10_0101),根据上表,可以发现\u4E25处在第三行的范围内(&a href=&tel:; 0800 ~ 0000&/a& FFFF),因此“严”的UTF-8编码需要3个字节,即格式是“1110xxxx 10xxxxxx&br&10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“&a href=&tel:100100&/a&&a href=&tel:111000&/a&&br&”,转换成十六进制就是E4 B8 A5。&/p&&br&&br&&p&可以看到“严”的Unicode码是\u4E25,而UTF-8编码是E4 B8 A5,两者是不一样的。它们之间的转换可以通过程序或一些编辑器实现。&/p&&br&&br&&b&5.3
大端、小端与字节序标记&/b&&br&&br&&br&&p&UTF-8以单字节为编码单元,没有字节序的问题。UTF-16以2个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚编码单元的字节序。例如,当我们收到6A7C时,它到底代表\u6A7C还是\u7C6A? &/p&&br&&br&&p&仍以汉字“严”为例,Unicode(UCS-2)码是\u4E25,需要用两个字节存储,一个字节是4E,另一个字节是25。存储的时候,4E在前,25在后,就是Big endian方式;25在前,4E在后,就是Little endian方式。&/p&&br&&br&&p&因此,第一个字节在前,就是“大头/大端方式”(Big endian),第二个字节在前就是“小头/小端方式”(Little endian)。那么很自然的,就会出现一个问题:计算机怎么知道某一个文件到底采用哪一种方式编码?&/p&&br&&br&&p&Unicode编码规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做“&b&零宽度非换行空格&/b&”(Zero Width No-Break&br&Space),它的编码是FEFF。其实FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中,UCS规范建议我们在传输字节流前,先传输字符&Zero Width&br&No-Break Space&,这正好是2个字节,而且FF比FE大1。如果一个文本文件的头2个字节是FE FF,就表示该文件采用大头方式;如果头2个字节是FF FE,就表示该文件采用小头方式。字符&Zero Width&br&No-Break Space&又被称作&b&BOM&/b&(Byte Order Mark,字节序标记)。&/p&&br&&br&&p&&b&UTF-8&/b&&b&不需要&/b&&b&BOM&/b&&b&来表明字节顺序,但可以用&/b&&b&BOM&/b&&b&来表明编码方式。&/b&字符&Zero Width No-Break&br&Space&的UTF-8编码是EF BB BF,所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的,但实际上并不建议UTF-8格式的文件使用BOM。&/p&&br&&br&&b&6 、各种环境下的编码&/b&&br&&br&&br&&p&简单介绍完字符编码相关知识后,我们需要理解不同环境下的字符编码问题,这对程序猿/媛们来说更为重要。谈及具体环境下的编码,我们实际上有以下四个层次:&/p&&br&&br&&p&1)
&br&&b&操作系统默认编码方式&/b&。这是操作系统的内部属性,比如大多Linux系统、Mac OS默认UTF-8编码,中文版Windows系统默认GBK编码&/p&&br&&p&2)
&br&&b&终端编码方式&/b&。终端包括cmd、shell、terminal等,在与终端交互时,字符是要在终端显示的,这必然涉及到终端采用的编码方式,事实上有不少bug是在这个层面产生的。对于单机系统而言,终端编码与操作系统编码一般是一致的,但在远程登录时,可能会遇到一些问题。&/p&&br&&p&3)
&br&&b&文本文件的编码方式&/b&。这是我们接触最多的概念,即一个文本文件(如源代码文件)是以什么编码格式保存的。大多数编辑器可以显示文本的编码格式,以及更改编码方式重新存储。以下图中的Notepad++编辑器为例,在格式选项卡中显示了可以进行编码转换的选项。&/p&&br&&p&4)
&br&&b&程序中的字符、字符串变量的编码方式&/b&。这与具体的编程语言相关,涉及到程序运行时变量在内存中的状态。Python典型的encode/decode就是这个鬼。&/p&&figure&&img src=&https://pic3.zhimg.com/aa4ead31d2e48a79fdebfc3be32369ea_b.png& data-rawwidth=&224& data-rawheight=&221& class=&content_image& width=&224&&&/figure&&br&&br&&p&图&br&2 Notepad++中的编码选项&/p&&br&&br&&p&以Java和Python编程语言为例。&/p&&br&&br&&p&Java和Python3里,字符均采用Unicode编码(Java.lang.String 采用 UTF-16 编码方式存储所有字符),因此可以很好地支持中文。但是,Python2中Unicode不是字符默认编码格式(Python从2.2才开始支持Unicode),因此需要进行编码的转换。函数decode( char_set )可以实现其它编码到Unicode的转换,函数encode( char_set )可以实现Unicode到其它编码方式的转换,这里所讲的Unicode String是指 UCS-2或者UCS-4 编码的Code Points。&/p&&br&&br&&p&比如, (&你好&).decode(&br&&GB2312&) 将得到 u'\u4f60\u597d',即“你”和“好&的 Unicode 码分别是0x4f60 和 0x597d,再用&br&(u'\u4f60\u597d').encode(&UTF-8&) 就可以得到“你好”的UTF-8编码结果:'\xe4\xbd\xa0\xe5\xa5\xbd'。【请注意,这些运行结果跟具体的操作平台有关,读者可以思考为什么,相关解答可以参考知乎(&a href=&https://www.zhihu.com/question//answer/& class=&internal&&Python2.7 中文字符编码,使用Unicode时,选择什么编码格式? - Kenneth 的回答&/a&)对此的解释,本小节也是受到该回答的启发整理而成】&/p&&br&&figure&&img src=&https://pic4.zhimg.com/adca7b41a0e6cdcffb627_b.png& data-rawwidth=&396& data-rawheight=&206& class=&content_image& width=&396&&&/figure&&br&&p&图 3 Unicode decode/encode&br&in Python (摘自Nature Language Processing&br&with Python, 2 edition)&/p&&br&&br&&p&实际上,Python 3和2很大区别就是Python本身改为默认用Unicode编码。字符串不再区分&abc&和u&abc&,字符串&abc&默认就是Unicode,不再代表本地编码,由于有这种内部编码,与C#和Java类似,没有必要在语言环境内做类似设置编码,也因此Python 3的代码和包管理上打破了和2.x的兼容。&/p&&br&&br&&p&再次提醒:&b&只有字符到字节或者字节到字符的转换才存在编码转码的概念&/b&。&/p&&br&&br&&b&7、
编码总结&/b&&br&&br&&br&&p&总结一下上述内容:&/p&&br&&br&&p&1、编码界最初只有ASCII码,只用了1byte中的7bit(0~127);&/p&&br&&p&2、欧洲人发现128个不够了,就把1byte中没用的最高位给用上了,出现了Latin系列(ISO-8859系列)编码;&/p&&br&&p&3、中国人民通过对ASCII编码进行中文扩充改造,产生了GB2312编码,可以表示6000多个常用汉字;&/p&&br&&p&4、汉字实在太多了,还有繁体、各种字符呀,于是加以扩展,有了GBK;&/p&&br&&p&5、GBK还不够,少数民族的字还木有呀,于是GBK又扩展为GB18030;&/p&&br&&p&6、每个国家、语言都有自己的编码,彼此无法交流,迫切需要大一统局面的出现;&/p&&br&&p&7、Unicode诞生,可以容纳全世界的任何文字。Unicode分为UCS-2和UCS-4,分别是2字节和4字节,实际2字节就够用了;&/p&&br&&p&8、为了Unicode能实际应用(存储、传输),制定了Unicode的编码方式,即UTF,有UTF-8、UTF-16、UTF-32,其中UTF-8应用广泛;&/p&&br&&p&9、UTF-16、UTF-32均是多字节传输,存在字节顺序的问题,于是有了大头还是小头的概念,为了解决这个问题,引入了BOM。UTF-8是单字节传输,不存在这个问题,也就不需要BOM,但可以有,仅用来表明编码格式;&/p&&br&&p&10、要从“环境/终端/文本/程序”等不同层次去理解编码,并尝试解决遇到的问题;&/p&&br&&br&&b&8 、最后的叨叨念&/b&&br&&br&&br&&p&各种编码方式的不一致,环境平台的不一致,会导致在编程中遇到各种头疼的bug。如果对这些相关的概念有一定的了解,至少在解决问题时会从容很多。&/p&&p&为了最大程度上减少可能产生的问题,可以在平时多注意一些细节,一方面方便个人开发,另一方面减少对二次开发用户的干扰。比如:&/p&&br&&br&&p&1)
&br&可以的话,文本尽量以UTF-8(无BOM)方式存储。对于Windows用户,强烈建议弃用默认的文本编辑器,采用一款更专业的编辑器,并将默认编码格式设置为UTF8(无BOM)。&/p&&br&&p&2)
&br&跨平台开发时,如果需要在terminal输出,注意terminal的编码方式,有时采用重定向到文件会是一个更加通用的选择。&/p&&br&&p&3)
&br&对于Python用户,如果不是相关依赖项只有py2版本,强烈建议采用py3开发,会减少很多中文相关的问题。&/p&&br&&p&4)
&br&路径、文件、变量等按照规范命名。比如,听说Java支持用中文命名变量了,因此可能会出现这样的代码,&u&String 哈哈&/u&&u& = &&a href=&tel:33333&/a&&&/u&; 为了减少后续可能遇到的问题,奉劝还是不要这样,不做死就不会死。&/p&&br&&br&&p&跋 · 示儿&/p&&p&死去元知字符崩,但悲不见编码同。&/p&&p&Unicode一统日,家祭无忘告乃翁。&/p&&br&&p&&b&参考资料&/b&&/p&&br&&p&[1]
&a href=&//link.zhihu.com/?target=http%3A//blog.renren.com/share/4244& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Unicode和UTF-8的关系&i class=&icon-external&&&/i&&/a&&br&(Unicode和UTF-8的关系)&/p&&p&[2]
&br&&a href=&//link.zhihu.com/?target=http%3A//blog.csdn.net/ldanduo/article/details/8203532& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)&i class=&icon-external&&&/i&&/a& (编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE))&/p&&p&[3]
&br&&a href=&//link.zhihu.com/?target=http%3A//www.elecfans.com/lab/code/60.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&UNICODE,GBK,UTF-8区别&i class=&icon-external&&&/i&&/a& (UNICODE,GBK,UTF-8区别)&/p&&p&[4]
&br&&a href=&//link.zhihu.com/?target=http%3A//bbs.csdn.net/topics/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词-CSDN论坛-CSDN.NET-中国最大的IT技术社区&i class=&icon-external&&&/i&&/a& (谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词)&/p&&p&[5]
&br&&a href=&//link.zhihu.com/?target=http%3A//blog.csdn.net/zhoubl668/article/details/6914018& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、UTF-8、unicode&i class=&icon-external&&&/i&&/a& (常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、UTF-8、unicode)&/p&&p&[6]
&br&&a href=&//link.zhihu.com/?target=http%3A//blog.csdn.net/arbel/article/details/7957782& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python的编码注释# -*- coding:utf-8 -*-&i class=&icon-external&&&/i&&/a& (Python的编码注释# -*- coding:utf-8 -*-)&/p&&p&[7]
&br&&a href=&//link.zhihu.com/?target=http%3A//www.blogjava.net/liuyz2006/articles/385768.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java几种常见的编码格式&i class=&icon-external&&&/i&&/a& (JAVA几种常见的编码格式)&/p&&p&[8]
&br&&a href=&//link.zhihu.com/?target=http%3A//zhidao.baidu.com/link%3Furl%3DJ_fPejDCsSMcTOQ7wepLd2UAA0-iAtW700iOOPzK2kaA7k1s-_kJM9hvc6qgMxTx1ay-xohYrjeY5nkzlJ3NXKp-stFbouRaNCs3i5x9iLe& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python3.3中文乱码与默认编码格式设定。&i class=&icon-external&&&/i&&/a&&br&(python3.3中文乱码与默认编码格式设定)&/p&&p&[9]
&br&&a href=&//link.zhihu.com/?target=http%3A//turandot.iteye.com/blog/1703258& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&字符集与编码的故事&i class=&icon-external&&&/i&&/a& (字符集与编码的故事)&/p&&br&&br&【“科研君”公众号初衷始终是希望聚集各专业一线科研人员和工作者,在进行科学研究的同时也作为知识的传播者,利用自己的专业知识解释和普及生活中的 一些现象和原理,展现科学有趣生动的一面。该公众号由清华大学一群在校博士生发起,目前参与的作者人数有10人,但我们感觉这远远不能覆盖所以想科普的领域,并且由于空闲时间有限,导致我们只能每周发布一篇文章。我们期待更多的战友加入,认识更多志同道合的人,每个人都是科研君,每个人都是知识的传播者。我们期待大家的参与,想加入我们,进QQ群吧~:】&br&&br&&br&&p&【非常高兴看到大家喜欢并赞同我们的回答。应许多知友的建议,最近我们开通了同名公众号:&b&PhDer&/b&,也会定期更新我们的文章,如果您不想错过我们的每篇回答,欢迎扫码关注~ 】&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//weixin.qq.com/r/5zsuNoHEZdwarcVV9271& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&weixin.qq.com/r/5zsuNoH&/span&&span class=&invisible&&EZdwarcVV9271&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& (二维码自动识别)&/p&
在开发过程中,字符编码始终是程序猿和程序媛们绕不开的一个话题。这里针对题主的问题和@的建议,简要整理下有关字符编码的知识,供列位看官茶余饭后消遣:) 本回答尽量直观地介绍相关概念,不纠缠相关规定的细节,以使读者能对字符编码有着更直观的理解…
以下是我的个人经历,可以作为一个案例参考。最后尝试总结。&br&&br&我近年展开新软件项目时,都尽量以测试驱动的形式开发,常常有不少的单元测试。然而,之前尝试用gcov/lcov的结果有点问题,也没有加入连续整合(Continous Integration, CI)中,并不太关注覆盖率。或者更坦白地说,写程序二十多年来,也没怎么做覆盖率的分析。&br&&br&我问这个问题之时,正在为RapidJSON的正式版做准备。刚刚上周末看到别的GitHub项目 &a href=&//link.zhihu.com/?target=https%3A//github.com/nlohmann/json& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nlohmann/json&i class=&icon-external&&&/i&&/a&,它用上了一个叫&a href=&//link.zhihu.com/?target=http%3A//coveralls.io& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coveralls&i class=&icon-external&&&/i&&/a& 的免费服务,并声称该项目是 100% coverage。&br&&br&&figure&&img src=&https://pic4.zhimg.com/add2ba5faeced876ee5d63d1b42c7957_b.jpg& data-rawwidth=&398& data-rawheight=&133& class=&content_image& width=&398&&&/figure&&br&好奇心驱使下,我也把这服务整合至RapidJSON中,经调整一些设定后,&a href=&//link.zhihu.com/?target=https%3A//coveralls.io/r/miloyip/rapidjson& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&miloyip/rapidjson&i class=&icon-external&&&/i&&/a& 跑出91% coverage。&br&&figure&&img src=&https://pic4.zhimg.com/9becb5ae5b2ac7_b.jpg& data-rawwidth=&741& data-rawheight=&118& class=&origin_image zh-lightbox-thumb& width=&741& data-original=&https://pic4.zhimg.com/9becb5ae5b2ac7_r.jpg&&&/figure&&br&「这也算是不错了吧?」我最初是这么想的。RapidJSON 本身有 5400 多行代码(LOC),而单元测试也另有 3500 多行。「这个测试代码量的比例已经不错了吧?」&br&&br&然而,当我仔细分析没被覆盖的代码,并尝试把它们都覆盖,就发现一些情况:&br&&ol&&li&找到了1个bug(&a href=&//link.zhihu.com/?target=https%3A//github.com/miloyip/rapidjson/commit/4824f12efbf01af72b8cb6fc96fae7b097b73015& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fixed a bug in trimming long number sequence&i class=&icon-external&&&/i&&/a&),这是最严重的问题。原因是开发期间改变了一些参数,但忘了在一个条件下做出相应的改动。&br&&/li&&li&找到了1个不应存在的公开API(&a href=&//link.zhihu.com/?target=https%3A//github.com/miloyip/rapidjson/commit/e7f1c6dd08b522cfcf9aed58a333bd9a0c0ccbeb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Remove an invalid Document::ParseInsitu() API&i class=&icon-external&&&/i&&/a&),这是在重构的时候加上的,当时忘了insitu parsing只允许来源编码和目的编码必须一致。&/li&&li&找到了一些未被执行、可以消去的代码(拟似死代码),主要出现于与浮点数转换相关的复杂算法里。这是由于那些代码都是参考别人的实现,逐渐变成现在的模样。例如原来strtod()的实现里,只有FastPath和BigNumber算法,后来在两者中间加入了DiyFP的算法,导致BigNumber中的一些分支条件不会再被触发。删去这些冗馀的代码可以优化性能,并减少代码量。但这些改动会存在风险,因为不知道是刚好单元测试没有覆盖到,还是真的冗馀。为了增强信心,唯有再审视代码的逻辑,并增加更多的测试数据及代码。&/li&&li&一些应该测试的分支,例如中途返回错误的地方。&/li&&li&一些锁碎的编译器相关问题。例如gcc开了-Wswitch-default,但在default里做assert(false)这种没有覆盖的情况。&/li&&/ol&经过几天努力,60多个commit、新增1000多行(不少新文件的license header??)、删减200多行,终于完成了 &a href=&//link.zhihu.com/?target=https%3A//github.com/miloyip/rapidjson/pull/304& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&100% line of code coverage&i class=&icon-external&&&/i&&/a& 的PR。&br&&br&&figure&&img src=&https://pic3.zhimg.com/0afcb06f6a36b86ee366f45e_b.jpg& data-rawwidth=&233& data-rawheight=&342& class=&content_image& width=&233&&&/figure&&br&&br&如其他答案所谈及,代码覆盖并不等于测试质量、代码质量。除非使用&a href=&//link.zhihu.com/?target=http%3A//en.wikipedia.org/wiki/Formal_methods& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Formal method&i class=&icon-external&&&/i&&/a&,一般来说测试是无法证明代码的正确性的。但即使代码覆盖(甚至只是最简单的line of code coverage)有许多潜在问题,适当地使用它作为一种手段/工具,也是有相当有帮助的,以下列出一些原因:&br&&ol&&li&我是粗心大意、善忘的。在这个案例中,发现有许多问题是因为改动代码后,忘记了增加、修改相关测试。当项目开发持续很长时间,也会忘记许多约定、细节,修改代码时只求通过测试,而没考虑到修改会否令其他代码变成死代码。&/li&&li&我是懒惰的(较堂皇的说法是时间所限)。虽然理想地应该为每个函数去做单元测试,但有时候只测试了上一层的代码。并没有深究每个函数中是否完全覆盖。尤其通常只测试正常路径,而容易忽略一些异常路径。如果参考了别人的算法实现,更容易因为一知半解而忽略各种情况。&/li&&/ol&总括而言,我现在认为,最好是在CI中加入代码覆盖分析。如果能在开始开发时,以代码覆盖作为工具粗略分析测试是否充分,可以避免以上的一些问题。并且通过CI,我们能追踪每个commit是否有潜在问题。尤其是分析开源项目中社区的PR时,能客观地看到是否缺乏最低限度的测试。&br&&br&如果要简单地回答自己设下的问题,就是尽量达到100%的覆盖率。许多程序因为各种原因难以覆盖,或是所费精力太大,不必强求达至100%,但需要清楚了解个中原因。然后,除了关注覆盖率的绝对值,也要关注它的变化,求进步。
以下是我的个人经历,可以作为一个案例参考。最后尝试总结。 我近年展开新软件项目时,都尽量以测试驱动的形式开发,常常有不少的单元测试。然而,之前尝试用gcov/lcov的结果有点问题,也没有加入连续整合(Continous Integration, CI)中,并不太关注覆盖…
这个问题需要的背景知识其实蛮多的,不过 signed distance field 这个东西确实是一种非常精巧的视觉表示 (visual representation),它的出发点和实现的方法都非常有意思。&br&&br&只是理解这个我们要从 GPU 说起..&br&&br&GPU 作为计算机里面的图形单元,我一旦提起你可能想到就是&br&&figure&&img src=&https://pic3.zhimg.com/bee4cd61415e_b.jpg& data-rawwidth=&700& data-rawheight=&471& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&https://pic3.zhimg.com/bee4cd61415e_r.jpg&&&/figure&其实在这么霸气的外表下面,GPU 主要只干两个事情:&br&&ul&&li&把输入进来的 3D 模型每个顶点的投影位置算好&br&&/li&&li&把纹理贴上去。&br&&/li&&/ul&&br&&i&当然,这里面还有很多光照,alpha test,
stencil 一类这里就不扯远了。&/i&&br&&br&总之呢,你看到的各种光陆怪离的游戏场景,其实都是这样产生的。&br&&figure&&img src=&https://pic3.zhimg.com/cad7f939fe56d7c0ed298f922d418b06_b.jpg& data-rawwidth=&1000& data-rawheight=&563& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic3.zhimg.com/cad7f939fe56d7c0ed298f922d418b06_r.jpg&&&/figure&仔细看的,可以看到其实都是一个个三角形构成的网格 ( Mesh ), 然后贴上对应的纹理图。&br&&br&那么问题来了, 假如我要在场景中添加一段文字呢, 你会怎么做?&br&&br&&b&最直接的做法,既然 GPU 这么喜欢画三角形, 我就把文字搞成一个三角形组成的 mesh, 然后当成一般的模型渲染不就行啦, 就像下图一样:&/b&&br&&figure&&img src=&https://pic1.zhimg.com/d03a61f700f5fbddb0f959f_b.png& data-rawwidth=&800& data-rawheight=&380& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/d03a61f700f5fbddb0f959f_r.png&&&/figure&完美!!, 对不对&br&&br&等等, 你有没有数过上面 a 字母中有多少个三角形, 而这个仅仅是一个字母而已!&br&&br&这种方法有个巨大的问题:由于 mesh 本身由三角形构成,而字符,特别是西文字符和数字,其中的曲线非常多。用三角形去构建弧线就变成了一件非常坑爹的事情,三角形用得少,字母看起来会非常难看,而三角形用的多,场景复杂度会爆炸式上升,直接的结果就是,帧率下降,游戏没法玩。。&br&&br&比如我大欧家的 O&br&&figure&&img src=&https://pic2.zhimg.com/27c29fd8f33f24b793a7e9fd928a0e91_b.png& data-rawwidth=&821& data-rawheight=&328& class=&origin_image zh-lightbox-thumb& width=&821& data-original=&https://pic2.zhimg.com/27c29fd8f33f24b793a7e9fd928a0e91_r.png&&&/figure&一直到 169 个 三角形,才像点样子,如果要渲染个 5000 字的读后感 .. &br&&br&好吧.. 我们再找其他方法:&br&&br&&b&既然没法用模型来做,那我们换个思路,GPU 不是也很喜欢贴图嘛,那我直接把字体生成一个贴图,直接贴不就得啦?&/b&&br&&figure&&img src=&https://pic2.zhimg.com/a9bede3da0c86f111c7a9_b.jpg& data-rawwidth=&1024& data-rawheight=&272& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic2.zhimg.com/a9bede3da0c86f111c7a9_r.jpg&&&/figure&&i&左边就是把所有的字母生成到一个贴图里面,这样如果渲染一个字母,只需要把这部分贴图贴到两个三角形上就好啦。现在一下子一个字母只需要两个三角形了啊。&/i&&br&&br&完美!!&br&&br&&b&其实这个方法是一个非常普遍的 GPU 渲染文字的方法, 基本可以满足你绝大部分需求,想详细了解可以看看 Glyph Atlas 相关的话题。&/b&&br&&br&呃, 说好的 signed distance field 呢....&br&&br&我们来仔细看看这两个方法,熟悉计算机图形学可能马上就发现, 第一个方法是矢量模型 (放大,缩小,旋转)都不会有问题。 而第二个方法, 由于字体已经渲染到了贴图中, 属于光栅模型(rasterized image).&br&&br&光栅模型一个最大的问题是,一旦需要做放大,缩小,变形旋转的时候,只能靠插值来解决 (interpolation).
而插值这种靠猜的方法, 后果就是会带来边缘模糊。&br&&figure&&img src=&https://pic2.zhimg.com/1c62b5fea2d95d87de5495_b.png& data-rawwidth=&500& data-rawheight=&181& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic2.zhimg.com/1c62b5fea2d95d87de5495_r.png&&&/figure&而在游戏里面,特别是场景里面的文字, 经常可以各个角度来看,贴图拉伸完全不能避免, 于是和上图一样,第二种方法的结果看起来会..呃..非常难看。&br&&br&那么有没有办法,既能有光栅模型的性能优势,又能有矢量模型任意拉伸和缩放的优势呢。。&br&&br&好吧,现在轮到 signed distance field 出场了。&br&&br&我们来考虑下, 数据存在贴图里面的问题最大的问题其实在于:&b&贴图最终被贴到模型上面的时候, 一旦拉伸都会通过插值器, 然后插值器就会在图片拉伸的区域写入插入的值,而这个计算出来的值,并不是一定是贴图里面物体在拉伸的时候会真实出现的值。&/b&&br&&br&比如我们来看这个典型的 bilinear 插值, 处于 (x,y) 点其实是周围 4 个点按照距离算出来的,如果图像并非是一个线性渐变的, 比如 这个 (x1, y2) , ( x2, y2) 其实构成的是一个边缘, 那么 (x,y) 计算出的值其实只是一个近似值,于是模糊就产生了.&br&&figure&&img src=&https://pic3.zhimg.com/87e50e7fd25b58d6ddb8c2_b.png& data-rawwidth=&104& data-rawheight=&146& class=&content_image& width=&104&&&/figure&&br&&b&那我们能不能找到一种数据格式,这种数据可以表示图形的所有信息,同时通过插值器的时候,插值器插入的值,恰好就是真实的值呢?&br&&/b&&br&&b&答案就是 signed distance field.&/b&&br&&br&我们在贴图里面,不再存储纹理的像素数据,而是存储每一个点到边缘的距离,就像下面一样:&br&&figure&&img src=&https://pic2.zhimg.com/adc4aeb13b3f3c686dce2fe5_b.png& data-rawwidth=&320& data-rawheight=&320& class=&content_image& width=&320&&&/figure&&br&假设白色的是笔划,那么整个贴图里面每一个像素存储的都是这个像素到最近笔划边缘的距离。大家有没有注意到:&b&这个距离值不管是在 x 方向还是在 y 方向, 本来就是线性的,于是经过 bilinear 插值以后,插入的值,也是真实的距离值&/b&。&br&&br&&b&其实你有没有意识到,本质上signed distance field 可以让你在纹理里面(光栅图里面)存一个图像的矢量表达。同时还利用插值器帮你做了矢量变换,这个才是这个方法最巧妙的地方。&/b&&br&&br&最后生成的纹理长这个样子:&br&&figure&&img src=&https://pic1.zhimg.com/a3aeb3f883a2b1df7f080_b.png& data-rawwidth=&675& data-rawheight=&312& class=&origin_image zh-lightbox-thumb& width=&675& data-original=&https://pic1.zhimg.com/a3aeb3f883a2b1df7f080_r.png&&&/figure&右边就是 signed distance field, 看起来像是边缘在发光一样,其实是因为距离边缘越远,数值越小,看起来越暗。。&br&&br&贴出来的图就是很霸气的这样啊(借个论文中的图):&br&&figure&&img src=&https://pic1.zhimg.com/542bd06ef135c6c8adc0_b.png& data-rawwidth=&402& data-rawheight=&304& class=&content_image& width=&402&&&/figure&是不是感觉好清楚 ^^&br&&br&PS: signed distance field 不仅仅可以用在字体上面,也可以用在很多的符号和形状上面,下面这个就是一个例子:&br&&figure&&img src=&https://pic3.zhimg.com/6eda3e3f94ec8fadc1132d2_b.png& data-rawwidth=&601& data-rawheight=&221& class=&origin_image zh-lightbox-thumb& width=&601& data-original=&https://pic3.zhimg.com/6eda3e3f94ec8fadc1132d2_r.png&&&/figure&&br&对于 signed distance map 生成有很多种方法,有兴趣的可以看看&br&&a href=&//link.zhihu.com/?target=http%3A//http.developer.nvidia.com/GPUGems3/gpugems3_ch34.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GPU Gems 3 - Chapter 34. Signed Distance Fields Using Single-Pass GPU Scan Conversion of Tetrahedra&i class=&icon-external&&&/i&&/a&&br&&a href=&//link.zhihu.com/?target=https%3A//www.researchgate.net/publication/_Real-time_texture-mapped_vector_glyphs& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Real-time texture-mapped vector glyphs (PDF Download Available)&i class=&icon-external&&&/i&&/a&&br&&br&然后不想动手的, 开源库在这里。。&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/libgdx/libgdx/wiki/Distance-field-fonts& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Distance field fonts · libgdx/libgdx Wiki · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&最后:这种方法其实不适合于精确渲染字体,背后的原因大家可以自己思考一下 ..
这个问题需要的背景知识其实蛮多的,不过 signed distance field 这个东西确实是一种非常精巧的视觉表示 (visual representation),它的出发点和实现的方法都非常有意思。 只是理解这个我们要从 GPU 说起.. GPU 作为计算机里面的图形单元,我一旦提起你可能…
&figure&&img src=&https://pic2.zhimg.com/v2-4d0ede42483bfff5fe93cfd34c7cadc9_b.jpg& data-rawwidth=&600& data-rawheight=&374& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-4d0ede42483bfff5fe93cfd34c7cadc9_r.jpg&&&/figure&&p&我从2013年开始在工作之余做奇怪的游戏,迄今已经有四年的历史了。很惭愧,没有什么突出的成绩,只有一些经验可以分享一下。&br&&/p&&p&一般而言,我们假设一个游戏设计师产生一百个点子,其中可以执行的大概有20个,能做成原型的大概只有十个,最终可以做成完整游戏上市的只有一个。当然,这并不代表剩下的那99个点子就全是白费功夫,伟大的作品,一定是在不断尝试与失败中诞生的。&/p&&p&因此,我整理了一下过去四年的奇怪游戏列表,在这里发布出来。这些不成熟的想法或许在玩家面前是一堆垃圾,但总有人会从中找到他们想要的东西。&/p&&p&我在自己的作品集网站中也收录了大部分游戏,请访问:&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.reckhou.com& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&www.reckhou.com&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-4e3ebe9f382d668c9ba963_b.jpg& data-rawwidth=&1109& data-rawheight=&897& class=&origin_image zh-lightbox-thumb& width=&1109& data-original=&https://pic2.zhimg.com/v2-4e3ebe9f382d668c9ba963_r.jpg&&&/figure&&p&以下的所有游戏都可以在百度网盘下载到,因为时间久远我没有一一验证过,如果出现无法运行的情况请麻烦在评论中指出,感谢:&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//pan.baidu.com/s/1o7WsuQu& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&pan.baidu.com/s/1o7WsuQ&/span&&span class=&invisible&&u&/span&&span class=&ellipsis&&&/span&&/a&&/p&&br&&br&&p&&b&先说一下近期的计划:&/b&&/p&&p&1月20日,也就是2017年的第一次全球Game Jam即将在世界各地举办,我将会参与上海站的活动。活动详情请见:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-31cd70f41baf1f6b81cb1d_b.jpg& data-rawwidth=&1200& data-rawheight=&676& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic4.zhimg.com/v2-31cd70f41baf1f6b81cb1d_r.jpg&&&/figure&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.globalgamejam.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GGJ全球创作节&/a&&br&&/p&&blockquote&鼓励热爱游戏的人们走在一起,以游戏创作的形式,进行头脑风暴、经验分享以及自我表达。 &br&通过一个周末的时间,唤醒人们内心的创作欲望, &br&并体验创意、策划、设计、编程这一整个游戏开发的过程, &br&而这一切将在不可思议的 48 小时 内完成。&/blockquote&&p&这次我将计划举办一场时长48小时的知乎Live,向各位展示一个游戏从构思,选择题材,决定玩法,设定美术风格,开发,测试到最终完成的全过程。希望通过这场Live,能够让更多热爱游戏的玩家们认识游戏开发是怎么一回事,参与到Game Jam这类开发活动中来,做出自己的第一个游戏,走上游戏开发的道路。&/p&&p&同时,我在此招募两位队友:&/p&&blockquote&&p&&b&游戏美术 &/b&- 需要负责游戏中所有与美术相关的部分,包括人设、动画、场景、UI等。我可以协助完成一些Unity中比较简单的动画和UI部分。我个人比较偏好2D像素或3D体素风格,但任何风格我都非常欢迎。&/p&&p&&b&游戏程序员 &/b&- 负责游戏核心玩法与流程的实现,需要对Unity3D比较熟悉,有一定工作经验。我可以协助你完成一些次要功能、协助游戏优化和Debug。&/p&&/blockquote&&p&如果对本次活动感兴趣,有意参与的朋友,请私信我简单介绍一下自己的情况。作为已经参与该类活动十多次的老司机,我对自己的实力非常有信心,也相信这次能够和大家合作,完成一些奇怪的...哦不对是有趣的游戏!&/p&&p&后续我也会在本专栏更新此次Live活动的过程,欢迎继续关注!&/p&&br&&p&&b&《西朝鲜日报》&/b&&/p&&p&&b&2014.2&/b&&/p&&p&&b&主题:策略、文字、天降伟人、反乌托邦&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-df9a969dcb_b.jpg& data-rawwidth=&1075& data-rawheight=&633& class=&origin_image zh-lightbox-thumb& width=&1075& data-original=&https://pic2.zhimg.com/v2-df9a969dcb_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-84cca705b0b_b.jpg& data-rawwidth=&1072& data-rawheight=&634& class=&origin_image zh-lightbox-thumb& width=&1072& data-original=&https://pic2.zhimg.com/v2-84cca705b0b_r.jpg&&&/figure&&p&&figure&&img src=&https://pic1.zhimg.com/v2-0e4b246eeba5fd9cee55c5d_b.jpg& data-rawwidth=&1076& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&1076& data-original=&https://pic1.zhimg.com/v2-0e4b246eeba5fd9cee55c5d_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-d5ff63cfe194ba_b.jpg& data-rawwidth=&1072& data-rawheight=&637& class=&origin_image zh-lightbox-thumb& width=&1072& data-original=&https://pic1.zhimg.com/v2-d5ff63cfe194ba_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-abeb2f8f99fc1a5ce0cb93_b.jpg& data-rawwidth=&1078& data-rawheight=&637& class=&origin_image zh-lightbox-thumb& width=&1078& data-original=&https://pic4.zhimg.com/v2-abeb2f8f99fc1a5ce0cb93_r.jpg&&&/figure&这是基于《Papers, Please》作者Lukas Dukope的一部Game Jam游戏架构上的MOD作品。在原来的基础上修改了美术,文案全部重写,底层的数值重新经过了调整。&/p&&br&&p&&b&《实验体二号》&/b&&/p&&p&&b&2014.10 上海Game Jam&/b&&/p&&p&&b&主题:文字、电击、权威、反乌托邦&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-5e10c042c9d171d6cbc1bdda_b.jpg& data-rawwidth=&640& data-rawheight=&409& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-5e10c042c9d171d6cbc1bdda_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-bc2fa9ddaee073f2ddf7e2bcb6f682e0_b.jpg& data-rawwidth=&2010& data-rawheight=&1260& class=&origin_image zh-lightbox-thumb& width=&2010& data-original=&https://pic1.zhimg.com/v2-bc2fa9ddaee073f2ddf7e2bcb6f682e0_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-f7ab7780772_b.jpg& data-rawwidth=&640& data-rawheight=&410& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-f7ab7780772_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-27b5de036cc2b9dee02af15a2a993082_b.jpg& data-rawwidth=&640& data-rawheight=&409& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-27b5de036cc2b9dee02af15a2a993082_r.jpg&&&/figure&&blockquote&游戏发生在二战背景下,你扮演一名纳粹研究员,研究的课题是:通过对肉体进行电击能否改善神经系统的缺陷,排除学习障碍。实验对象为一名患有数学学习障碍的成年人,患有这种疾病的患者无法正常完成最基本的加减运算。当实验对象答题错误时,你需要对实验对象进行电击惩罚。用于电击的电压从60V开始直到最高的340V。随着电压的不断升高,实验对象无法忍受开始反抗、哭喊并哀求你停止实验。但是即便你动了恻隐之心想要停止实验,实验负责人仍然坚持要求你完成实验,并试图说服你这一切都是为了实验对象的利益,以及科学家的责任,你无需为实验承担一切后果。这个实验的成败,以及实验对象的命运完全掌握在你的手中.......&br&&/blockquote&&p&当然,这个游戏的剧情并不是你想象的那样.....&/p&&p&注:1.03是英文版(最佳),1.01是正常中文版,1.02是鬼畜配音中文版,请自行选择合适的版本....&/p&&p&NGA讨论:&a href=&https://link.zhihu.com/?target=http%3A//bbs.ngacn.cc/read.php%3Ftid%3D7450156& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[PC] 独立游戏《实验体2号》,中国创造&/a&&/p&&br&&br&&p&&b&《金手指传奇》&/b&&/p&&p&&b&2015.2 Global Game Jam 2015 心动网络&/b&&/p&&p&&b&主题:动作、自动战斗、一键操作、讽刺&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-f21f16bf2f1ab_b.jpg& data-rawwidth=&637& data-rawheight=&358& class=&origin_image zh-lightbox-thumb& width=&637& data-original=&https://pic3.zhimg.com/v2-f21f16bf2f1ab_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-bdc4cc62184fcadf39e562_b.jpg& data-rawwidth=&637& data-rawheight=&358& class=&origin_image zh-lightbox-thumb& width=&637& data-original=&https://pic2.zhimg.com/v2-bdc4cc62184fcadf39e562_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-eb0bc5db0a6cf1cd7ed5b9_b.jpg& data-rawwidth=&637& data-rawheight=&358& class=&origin_image zh-lightbox-thumb& width=&637& data-original=&https://pic3.zhimg.com/v2-eb0bc5db0a6cf1cd7ed5b9_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-e5f921f25ad497e4e9a926_b.jpg& data-rawwidth=&637& data-rawheight=&358& class=&origin_image zh-lightbox-thumb& width=&637& data-original=&https://pic2.zhimg.com/v2-e5f921f25ad497e4e9a926_r.jpg&&&/figure&&blockquote&&This game is playable.& -- Stephen Hawwking &br&我确认自己可以玩这个游戏。 -斯蒂芬 火金 &br&&br&&What we do now when sky fall? An EPIC journey of heroes!& -- GameSport &br&当世界毁灭时我们将如何抉择?英雄史诗般的旅程! - GameSport &br&&br&&Nearly made me cried my heart out.& -- Developer's friend &br&让我激动得泪流满面。 - 开发者的朋友 &br&&br&&11/10 would play again.& - IGM&br&11/10 我会再玩一次。 - IGM&/blockquote&从这个游戏可以看出,我对国产手游的怨念真是由来已久......&p&这个游戏已经在Steam绿光通过:&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//steamcommunity.com/sharedfiles/filedetails/%3Fid%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Steam Greenlight :: YetAnother&Epic&GameInHistory&/a&&br&&/p&&p&游戏视频:&/p&&p&&a class=&video-box& href=&https://link.zhihu.com/?target=http%3A//v.youku.com/v_show/id_XODg1MzE2MzA4.html%3Fspm%3Da2hzp..0%26amp%3Bamp%3Bfrom%3Dy1.7-2& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&有史以来的另一部史诗级游戏巨作 - 金手指传奇—在线播放—优酷网,视频高清在线观看& data-poster=&& data-lens-id=&&&
&img class=&thumbnail& src=&&&&span class=&content&&
&span class=&title&&有史以来的另一部史诗级游戏巨作 - 金手指传奇—在线播放—优酷网,视频高清在线观看&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&http://v.youku.com/v_show/id_XODg1MzE2MzA4.html?spm=a2hzp..0&from=y1.7-2&/span&
&br&&/p&&br&&br&&p&&b&《长征》&/b&&/p&&p&&b&2015.7 上海Game Jam&/b&&/p&&p&&b&主题:策略、革命、Roguelike、充值、老乡快开门&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-dfd19fab2c3bbde860b71_b.jpg& data-rawwidth=&1510& data-rawheight=&1292& class=&origin_image zh-lightbox-thumb& width=&1510& data-original=&https://pic4.zhimg.com/v2-dfd19fab2c3bbde860b71_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-d0ad074d0eca86f7d5bc8457_b.jpg& data-rawwidth=&600& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-d0ad074d0eca86f7d5bc8457_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-5daf9ffa60d3265afc739c91_b.jpg& data-rawwidth=&1528& data-rawheight=&1102& class=&origin_image zh-lightbox-thumb& width=&1528& data-original=&https://pic4.zhimg.com/v2-5daf9ffa60d3265afc739c91_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-d75ab0d3de365b7393aa_b.jpg& data-rawwidth=&600& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-d75ab0d3de365b7393aa_r.jpg&&&/figure&&blockquote&1934年,在[此处被和谐]的疯狂围剿下,革命事业岌岌可危。作为红军的领导人[此处被和谐]主席,你需要带领革命队伍完成战略转移,到达[此处被和谐]。&br&&/blockquote&&p&具体请见:&/p&&p&&a class=&video-box& href=&https://link.zhihu.com/?target=http%3A//v.youku.com/v_show/id_XMTI5NTkwMTY0MA%3D%3D.html%3Fspm%3Da2hzp..0%26amp%3Bamp%3Bfrom%3Dy1.7-2& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&大型革命游戏史诗-长征—在线播放—优酷网,视频高清在线观看& data-poster=&& data-lens-id=&&&
&img class=&thumbnail& src=&&&&span class=&content&&
&span class=&title&&大型革命游戏史诗-长征—在线播放—优酷网,视频高清在线观看&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&http://v.youku.com/v_show/id_XMTI5NTkwMTY0MA==.html?spm=a2hzp..0&from=y1.7-2&/span&
&br&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&你玩过的最丧心病狂的游戏是什么? - 侯帅英的回答 - 知乎&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&如何在48小时内完成一部大型革命题材游戏&/a&&/p&&p&其实我当天晚上本来不准备去的,鬼使神差地就到了活动现场,然而因为去得太晚又没人组队,只好拉了网易游戏的一个小伙伴勉强弄了一版美术出来......&/p&&p&至于为什么最后会变成这么和&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&♂&/a&谐的题材,我也不知道....&/p&&br&&br&&p&&b&《狡猾史莱姆》&/b&&/p&&p&&b&2015.8 Ludum Dare #33&/b&&/p&&p&&b&主题:潜行、射击、光影交替&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b4dde0d7cb115ad57175_b.jpg& data-rawwidth=&180& data-rawheight=&140& class=&content_image& width=&180&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-377c8c0f0a0102aaf74b9_b.jpg& data-rawwidth=&600& data-rawheight=&451& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-377c8c0f0a0102aaf74b9_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-a649bd8dd60bf_b.jpg& data-rawwidth=&600& data-rawheight=&451& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-a649bd8dd60bf_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-aadc8d11d653f_b.jpg& data-rawwidth=&664& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&664& data-original=&https://pic2.zhimg.com/v2-aadc8d11d653f_r.jpg&&&/figure&&blockquote&&b&“我是史莱姆。&br&这就是我的复仇.....”&/b&&/blockquote&&p&&b&# 在伸手不见五指的黑夜里潜行,向那些杀死了成千上万你同类的游戏玩家们复仇!!&/b&&/p&&p&&b&# 使用掩体遮蔽你的行踪,尽可能多地送“勇者”们上西天!!&/b&&/p&&br&&p&&b&操作方式:&/b&&/p&&blockquote&&p&WSAD移动,鼠标左键扔出史莱姆火球!&/p&&p&- 屏幕黑白时,说明已经进入潜行状态,如果离敌人太近会被发现&/p&&p&- 当屏幕变成彩色时,说明已经被敌人发现,赶快逃跑!&/p&&p&- 如果一定时间内避开敌人的视线,就会自动进入潜行状态&/p&&/blockquote&&br&&p&&b&功能和特色:&/b&&/p&&blockquote&&p&- 充满黑色幽默的开场动画!&/p&&p&- 10800p终极超高清画面!强烈建议使用六路GeForce(R) GTX TITAN显卡以发挥最好的画面效果!&/p&&p&- 3D音效支持!请带上耳机以更好分辨敌人方位!&/p&&p&- 你会死很多次,是的,相当多次。为了鼓励你不要气馁,我们设置了低分榜。多往好的方面想想吧,反正你比表现最差的那次要强上许多了!!&/p&&p&- 我们在游戏中设置了1245种道具来帮助你更好地杀敌!&/p&&p&- 可以自由选择潜行或者一路杀到底的游戏方式!&/p&&/blockquote&&br&第一次参加Ludum Dare这样世界性的Game Jam活动,由于是72小时加上系统复杂,压力非常大。好在最后完成了,排名挤进了前15%。&br&&figure&&img src=&https://pic3.zhimg.com/cacc3fbf58a0ef_b.jpg& class=&content_image&&&/figure&&br&&br&关于这个游戏的一些介绍和总结请看:&br&&a class=&video-box& href=&https://link.zhihu.com/?target=http%3A//v.youku.com/v_show/id_XMTU0MzAxNTc3Mg%3D%3D.html%3Ffrom%3Dy1.7-2%26amp%3Bamp%3Bspm%3Da2hzp..0& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&Sly Slime - Revenge On All Players Gameplay Video—在线播放—优酷网,视频高清在线观看& data-poster=&& data-lens-id=&&&
&img class=&thumbnail& src=&&&&span class=&content&&
&span class=&title&&Sly Slime - Revenge On All Players Gameplay Video—在线播放—优酷网,视频高清在线观看&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&http://v.youku.com/v_show/id_XMTU0MzAxNTc3Mg==.html?from=y1.7-2&spm=a2hzp..0&/span&
&br&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&Ludum Dare #33游戏大赛队友招募&/a&&br&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&史莱姆之复仇 - 三天完成的游戏&/a&&br&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&Game Jam:快速制作游戏原型的一些经验和教训&/a&&br&&br&这个游戏同样在Steam绿光获得通过:&br&&br&&a href=&https://link.zhihu.com/?target=http%3A//steamcommunity.com/sharedfiles/filedetails/%3Fid%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sly Slime-Revenge On All Players&/a&&br&&br&&br&&br&&br&&b&《游戏公司模拟器2016》&/b&&br&&b&2016.2 Global Game Jam&/b&&br&&b&主题:策略经营、献祭、烧策划&/b&&br&&br&&figure&&img src=&https://pic3.zhimg.com/v2-bf222a31daf404fb485f35_b.jpg& data-rawwidth=&600& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-bf222a31daf404fb485f35_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-1d12e5d652e3a151a98db8e43a697b30_b.jpg& data-rawwidth=&2560& data-rawheight=&1600& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic3.zhimg.com/v2-1d12e5d652e3a151a98db8e43a697b30_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-8d68cd390dddca9dfaa0b5e_b.jpg& data-rawwidth=&2560& data-rawheight=&1600& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic4.zhimg.com/v2-8d68cd390dddca9dfaa0b5e_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-6a29a711212bcaf231f1fda402e987e7_b.jpg& data-rawwidth=&2560& data-rawheight=&1588& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic4.zhimg.com/v2-6a29a711212bcaf231f1fda402e987e7_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-be1904ddcf87ebee71cc234bc8a7bebe_b.jpg& data-rawwidth=&1512& data-rawheight=&858& class=&origin_image zh-lightbox-thumb& width=&1512& data-original=&https://pic2.zhimg.com/v2-be1904ddcf87ebee71cc234bc8a7bebe_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-0fa3ea365a1e1a_b.jpg& data-rawwidth=&2560& data-rawheight=&1598& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic2.zhimg.com/v2-0fa3ea365a1e1a_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-5b41aac3f80be0f0dcccd_b.jpg& data-rawwidth=&2560& data-rawheight=&1594& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic1.zhimg.com/v2-5b41aac3f80be0f0dcccd_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-8c1092d92bcad8eb37ec216ac4d2d5e9_b.jpg& data-rawwidth=&2560& data-rawheight=&1588& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic1.zhimg.com/v2-8c1092d92bcad8eb37ec216ac4d2d5e9_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-2224ebe2da53b77cc65e4f_b.jpg& data-rawwidth=&2560& data-rawheight=&1590& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic2.zhimg.com/v2-2224ebe2da53b77cc65e4f_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-70cd8bfe30ecef03ea412f_b.jpg& data-rawwidth=&2560& data-rawheight=&1604& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic4.zhimg.com/v2-70cd8bfe30ecef03ea412f_r.jpg&&&/figure&&blockquote&&p&故事背景这种事情随便怎样都好啦,反正无论写多少字玩家都不会看的啦。但是不写又觉得好像对不起观众所以还是写一点吧...&br&&/p&&p&你扮演游戏制作人,为了做出更优(zhuan)秀(qian)的游戏,所以要把手下的策划、美术和程序员献祭给魔王。&/p&&p&至于为什么要献祭给魔王其实我也没有想好啦,不过既然游戏设定是这样你们就愉快地接受吧(笑)&/p&&/blockquote&&p&具体介绍请见:&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&游戏公司模拟器2016&/a&&br&&/p&&p&总之又是一个发泄怨念的奇怪游戏....从中得出的教训是:千万不要在48小时这么短的时间里做UI很多的策略游戏!!千万不要!!&/p&&br&&br&&p&&b&《佳佳的奇妙变形》&/b&&/p&&p&&b&2016.4 Ludum Dare #35&/b&&/p&&p&&b&主题:变形、弹幕、反弹、鬼畜&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-4d0ede42483bfff5fe93cfd34c7cadc9_b.jpg& data-rawwidth=&600& data-rawheight=&374& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-4d0ede42483bfff5fe93cfd34c7cadc9_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-96eddcfe9e_b.jpg& data-rawwidth=&600& data-rawheight=&724& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-96eddcfe9e_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-addcb97f83db39aabf71_b.jpg& data-rawwidth=&600& data-rawheight=&337& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-addcb97f83db39aabf71_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-bcfe5b11f54_b.jpg& data-rawwidth=&600& data-rawheight=&335& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-bcfe5b11f54_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-522c613c4eeafddfe19bbced_b.jpg& data-rawwidth=&600& data-rawheight=&374& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-522c613c4eeafddfe19bbced_r.jpg&&&/figure&&blockquote&&p&这次Ludum Dare的主题是“Shape Shift”(变形),而这也是我这次设计核心玩法的灵感来源。&br&&/p&&br&游戏的核心玩法是比较传统的弹幕游戏,相对于RTS、沙盒、MMORPG而言也比较容易实现一点,实际上我也一直有做一款弹幕游戏的想法。然而传统弹幕游戏最大的问题在于,弹幕的形状,关卡设计时敌人摆放站位都需要严格精确地计算,而这也是在短短72小时内很难做到平均水准的(何况我们只有两个人)。然而如果把这个游戏做成一个普通的顶视角射击,似乎又难以在众多参赛者当中脱颖而出(这次一共有2700多个队伍提交了作品)。那么,为何不在游戏机制上想些对策,来让玩家自己制造弹幕呢?于是,经过一番脑中原型推演和测试,修改(简称脑补)后,我们的核心玩法就确立起来了。&/blockquote&&p&这是第二次参加Ludum Dare,这次的状态并不是特别好,却意外地做出了迄今为止我最满意的玩法。游戏的完成度也相当高,在评分时进入了前5%。&/p&&figure&&img src=&https://pic3.zhimg.com/6b6a198b9d25c84bcc1e_b.jpg& class=&content_image&&&/figure&&p&具体介绍请见:&/p&&p&&a class=&video-box& href=&https://link.zhihu.com/?target=http%3A//v.youku.com/v_show/id_XMTU0MTYyNDMxMg%3D%3D.html%3Ffrom%3Dy1.7-2%26amp%3Bamp%3Bspm%3Da2hzp..0& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&【鬼畜】弹幕游戏-佳佳的奇妙变形—在线播放—优酷网,视频高清在线观看& data-poster=&& data-lens-id=&&&
&img class=&thumbnail& src=&&&&span class=&content&&
&span class=&title&&【鬼畜】弹幕游戏-佳佳的奇妙变形—在线播放—优酷网,视频高清在线观看&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&http://v.youku.com/v_show/id_XMTU0MTYyNDMxMg==.html?from=y1.7-2&spm=a2hzp..0&/span&
&br&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&我的鬼畜游戏新作:佳佳的奇♂妙变形&/a&&br&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&Ludum Dare 35开发记录和总结&/a&&br&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/?refer=ggame& class=&internal&&Ludum Dare 35结果揭晓&/a&&br&&/p&&br&&br&&p&&b&《男粥》&/b&&/p&&p&&b&2016.6 IndieAce Game Jam&/b&&/p&&p&&b&主题:音乐、猜拳、排队、哲♂学&/b&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-636ad05f8a18f80a8637b1_b.jpg& data-rawwidth=&1774& data-rawheight=&970& class=&origin_image zh-lightbox-thumb& width=&1774& data-original=&https://pic3.zhimg.com/v2-636ad05f8a18f80a8637b1_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-ad2ad1d3cab390d2937e7_b.jpg& data-rawwidth=&1774& data-rawheight=&968& class=&origin_image zh-lightbox-thumb& width=&1774& data-original=&https://pic3.zhimg.com/v2-ad2ad1d3cab390d2937e7_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-fa_b.jpg& data-rawwidth=&1774& data-rawheight=&971& class=&origin_image zh-lightbox-thumb& width=&1774& data-original=&https://pic2.zhimg.com/v2-fa_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-b72eb85667bbe60d6dfa3e_b.jpg& data-rawwidth=&1774& data-rawheight=&988& class=&origin_image zh-lightbox-thumb& width=&1774& data-original=&https://pic3.zhimg.com/v2-b72eb85667bbe60d6dfa3e_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-71ca81ec7ae1b_b.jpg& data-rawwidth=&1761& data-rawheight=&996& class=&origin_image zh-lightbox-thumb& width=&1761& data-original=&https://pic4.zhimg.com/v2-71ca81ec7ae1b_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-d864cf442c_b.jpg& data-rawwidth=&1774& data-rawheight=&984& class=&origin_image zh-lightbox-thumb& width=&1774& data-original=&https://pic1.zhimg.com/v2-d864cf442c_r.jpg&&&/figure&&br&&br&&blockquote&&p&总之是个(回合制)节奏猜拳游戏...按照背景音乐的节奏使出克制对方的招式来打倒敌人。&/p&&p&每个回合一共16拍,1-4拍显示敌人的出招顺序,5-8拍进入倒计时,9-12拍玩家出招,13-16拍显示结果并进入下一回合。&/p&&p&操作:方向键左右移动,Q=石头 W=剪刀 E=布 方框:这一拍没有动作,不要按键&br&&/p&&p&&b&至于为什么画风会变成这样我也不知道啊啊啊啊啊啊啊!!&/b&&/p&&/blockquote&&p&详细介绍请看:&/p&&p&&a class=&video-box& href=&https://link.zhihu.com/?target=http%3A//v.youku.com/v_show/id_XMTYyOTg4MjM5Ng%3D%3D.html%3Fspm%3Da2hzp..0%26amp%3Bamp%3Bfrom%3Dy1.7-2& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&男粥—在线播放—优酷网,视频高清在线观看& data-poster=&& data-lens-id=&&&
&img class=&thumbnail& src=&&&&span class=&content&&
&span class=&title&&男粥—在线播放—优酷网,视频高清在线观看&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&http://v.youku.com/v_show/id_XMTYyOTg4MjM5Ng==.html?spm=a2hzp..0&from=y1.7-2&/span&
&br&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&我又双叒叕做了一个奇怪的游戏...&/a&&br&&/p&&p&总之...做完了这个游戏之后感觉大家都奔放起来了呢......&/p&&br&&br&&p&&b&VR牛仔决斗&/b&&/p&&p&&b&2016.9&/b&&/p&&p&&b&主题:VR、决斗、子弹时间&/b&&/p&&p&&figure&&img src=&https://pic3.zhimg.com/v2-9abf6af423b187312edcfa7a7cede972_b.jpg& data-rawwidth=&1726& data-rawheight=&870& class=&origin_image zh-lightbox-thumb& width=&1726& data-original=&https://pic3.zhimg.com/v2-9abf6af423b187312edcfa7a7cede972_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-8a920ea9c0840a28dbe359a422e40e1e_b.jpg& data-rawwidth=&1726& data-rawheight=&868& class=&origin_image zh-lightbox-thumb& width=&1726& data-original=&https://pic3.zhimg.com/v2-8a920ea9c0840a28dbe359a422e40e1e_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-30c492c18cb02d96ace93bb_b.jpg& data-rawwidth=&1726& data-rawheight=&874& class=&origin_image zh-lightbox-thumb& width=&1726& data-original=&https://pic1.zhimg.com/v2-30c492c18cb02d96ace93bb_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-bb9bb4adaae02_b.jpg& data-rawwidth=&1726& data-rawheight=&872& class=&origin_image zh-lightbox-thumb& width=&1726& data-original=&https://pic1.zhimg.com/v2-bb9bb4adaae02_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-b219bac1e367a390b290_b.jpg& data-rawwidth=&1726& data-rawheight=&874& class=&origin_image zh-lightbox-thumb& width=&1726& data-original=&https://pic1.zhimg.com/v2-b219bac1e367a390b290_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-cc70e0ffbe7b560fe46f_b.jpg& data-rawwidth=&1726& data-rawheight=&872& class=&origin_image zh-lightbox-thumb& width=&1726& data-original=&https://pic3.zhimg.com/v2-cc70e0ffbe7b560fe46f_r.jpg&&&/figure&一个受上世纪60年代西部电影启发的VR牛仔决斗游戏,存在子弹时间的设定,玩家需要在一块2mx1.5m的场地中左右躲闪子弹,使用双枪中有限的子弹击杀敌人。&/p&&p&需要使用VR设备才能玩所以没有Demo....只在网盘放了视频。&/p&&p&&a class=&video-box& href=&https://link.zhihu.com/?target=http%3A//v.youku.com/v_show/id_XMTYxMTg4NTA4MA%3D%3D.html%3Ffrom%3Dy1.7-2%26amp%3Bamp%3Bspm%3Da2hzp..0& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&VRCowboy-HD—在线播放—优酷网,视频高清在线观看& data-poster=&& data-lens-id=&&&
&img class=&thumbnail& src=&&&&span class=&content&&
&span class=&title&&VRCowboy-HD—在线播放—优酷网,视频高清在线观看&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&http://v.youku.com/v_show/id_XMTYxMTg4NTA4MA==.html?from=y1.7-2&spm=a2hzp..0&/span&
&/p&&br&&p&以上的所有游戏都可以在百度网盘下载到,因为时间久远我没有一一验证过,如果出现无法运行的情况请麻烦在评论中指出,感谢:&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//pan.baidu.com/s/1o7WsuQu& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&pan.baidu.com/s/1o7WsuQ&/span&&span class=&invisible&&u&/span&&span class=&ellipsis&&&/span&&/a&&/p&&br&&br&&p&&b&放上所有游戏的制作组名单,感谢每一位与我合作过的朋友和同事,如果没有你们的贡献,这些游戏恐怕永远都只是我脑海中的构想!&/b&&/p&&br&&br&&p&&b&《西朝鲜日报》&/b&&/p&&p&&b&&a href=&https://www.zhihu.com/people/ad73bbc33eedc010a67eb4e& data-hash=&ad73bbc33eedc010a67eb4e& class=&member_mention& data-editable=&true& data-title=&@侯帅英& data-hovercard=&p$b$ad73bbc33eedc010a6}

我要回帖

更多关于 阿凡达 完整版 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信