游戏设计师入行指南:从小事做起 学多种技能

u010174337 2015-04-08 02:41:08
如何才能进入游戏行业,成为这个行业的从业者之一?近日,在英文游戏开发者网站Gamasutra,资深游戏人哈里森·平客(Harrison Pink)撰写专栏文章探讨这一话题,对有志进入游戏行业的新人们提出了自己的建议。以下是游戏陀螺对文章主要内容的编译。

1.制作游戏

没错,这是最重要的一点。若不制作游戏,你将无法证明你具备设计游戏的能力。当然啦,如果你在制作游戏时一点都不开心,那我还是建议你重新考虑,是否真有决心以开发游戏为业?

不必强求每一款游戏都能发布。在起步阶段,数量比质量重要。
不必强求每一款游戏都能发布。在起步阶段,数量比质量重要。
玩游戏=制作游戏

对一名潜在的游戏设计师来说,玩游戏很重要。你需要玩所有类型的游戏,这将让你迅速了解一大批独特的设计方法。但玩游戏无法替代制作游戏的真实体验,只有当你真正完成一款游戏的开发时,你才会理解一名设计师创作、执行、迭代并优化一款游戏的整个心路历程。

游戏设计师体验游戏的目的,不仅在于评价一款游戏是否好玩,还应找出其为何好玩(或不好玩)。假设你觉得《异形:隔离》不好玩,你得追问自己为什么:视觉消息令人困惑?操作方式与玩家大脑的预期不同?你怎样解决该问题?设计师为什么创作那个系统?

我知道(制作游戏的)过程艰难——尤其当你面对空白屏幕,不知从何开始的时候——但你需要强迫自己跳过这个门槛。这是一头所有创意工作者都要面对的猛兽,但你必须勇敢挑战。

从小事做起,保持灵活性

很多年轻设计师试图一入行就创作巨著,但这是错误的。这完全不现实,很快就会让设计师精疲力竭累觉不爱,继而退出游戏行业。从小事做起吧:制作一款平台游戏,克隆《超级马里奥兄弟》,或者以你家的照片为蓝本做一款点击式的冒险游戏。我经常听到有人感叹:“可我没有好的创意!”但事实上,学习基本技能并不需要有啥好的创意。当你第一次尝试时,越早着手越好。

但你务必要完成一款游戏的整个开发过程,因为这将是你向未来东家证明自己的游戏设计能力的依据。自吹自擂当然容易,但你究竟制作了什么游戏?一款完整的作品,能够让你向游戏公司展示自己对游戏创作的执著和奉献精神。

我的观点是,任何人在工作时都会经历一个学习的过程,而你所创作的一切都是有价值的。

2.制作更多游戏

每天工作8-9个小时,回到家再研究某个游戏创意?没错这真的很辛苦,是很多新人最难跨越的障碍之一,但我仍建议大家尽可能多地制作游戏。你也许可以撰写博客或日志,详细规划自己在每一天内能够做些什么,学到些什么。

与此同时,如果你创作出十分基本的游戏内容,请记住那并不丢脸。相反,那是足以让你引以为豪的伟大成就。在念大学时,我曾尝试用RPG Maker创作一款以《神秘岛》(Myst)为游戏背景的RPG游戏,那款游戏设计得很烂,完全是《最终幻想》的换皮作品,但那都不重要。

当你推出处子作,你就好比一个试图活动四肢的新生婴儿,但我相信随着时间推移,你的四肢将变得越来越灵活并强壮。

3.学习多种技能

游戏设计师应具备多种技能
游戏设计师应具备多种技能
对游戏设计师来说,学习多样化技能的重要性显而易见。即便某些看似与游戏设计无关的知识或技能,也有可能帮助你获得关于游戏设计的全新视角。相反,如果你将游戏设计能力提升到顶尖水平对其他领域却一无所知,那么你的“经验池”空间实际上是有限的。

多样化才能

游戏设计师往往身兼数职。以我个人经验为例,我经常需要与同时讨论角色动画、配音、环境美术、剧本原型等方面的事情。所以游戏设计师虽未必是100%的多面手,但确实应具备较宽的知识面。

黑暗艺术

在我看来,编程就像高深莫测的魔法,但设计师学点这方面的知识是有好处的。这会让你更好地理解,如何将游戏创意变成一款实际的产品。此外,这也将帮助你更好地与其他程序员协作——因为你理解他们的语言。

4.寻找同伴。

虽然我并不完全认同“有人好办事”这个观点,但在游戏圈子里,多多结识朋友肯定有利无害。朋友们乐于彼此帮助——当你找工作、招聘,或者为自己的最新游戏搜集反馈的时候。

但我需要强调的一点是,诸位交朋友的动机切忌太功利,以为自己捞好处为唯一目的。不要将人视为一种货币,那很不礼貌,并且会让其他人避而远之。

志愿者

如果有机会,你可以申请担任GDC和PAX游戏展等行业展会的志愿者。一方面,这会让你了解关于很多业内公司和人士的更多信息;另一方面,这类经历也有助于你向潜在东家展示自己对于游戏开发的热情。

5.暂停、协作与倾听

创作游戏的经历很棒,但你需要与同伴并肩作战。有时候,你需要跳出自己的思维框架,倾听来自其他人的看法。你可以尝试加入一支mod团队,或者加入一场Game Jam,学习怎样与同伴合作。在游戏行业,团队合作是最重要的技能之一。

作为一名职业游戏设计师,同伴们需要你发挥专业水平按时完成任务,需要你预估某个任务(或某批任务)的需要多长时间完成,从而协调游戏开发的进度表。你需要灵活多变,更重要的是,你需要自己设定不同任务的优先级,优先完成最重要的工作。

此外,当一支团队拥有3-4名成员时,你完成一款游戏的成功率也将变得更高。因为同伴拥有你并不具备的某些技能。

...全文
1728 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
天外怪魔 2019-02-13
  • 打赏
  • 举报
回复
引用 3 楼 碧水幽幽泉 的回复:
SAS中nodupkey和nodup的区别 1.nodupkey会把同by variable里变量有相同值的observation都删掉。 这些observation包括那些与by variable里变量有相同值,但与剩下变量有不同值的observation。 如: input id1 $ id2 $ extra ; cards; aa ab 3 aa ab 3 aa ab 2 aa ab 1 ; proc sort nodupkey data=test3; by id1 id2; run; options nocenter; proc print data=test3; run; 输出结果如下: Obs id1 id2 extra 1 aa ab 3 2.nodup会把那些仅与by variable里变量有相同值的observation删掉 如: data test2; input id1 $ id2 $ extra ; cards; aa ab 3 aa ab 3 aa ab 2 aa ab 1 ; proc sort nodup data=test2; by id1 id2; run; options nocenter; proc print data=test2; run; 输出结果如下: Obs id1 id2 extra 1 aa ab 3 2 aa ab 2 3 aa ab 1 但要注意的是nodup只会把相邻的且仅具有相同by variable变量值的observation删掉 如: data test1; input id1 $ id2 $ extra ; cards; aa ab 3 aa ab 1 aa ab 2 aa ab 3 ; proc sort nodup data=test1; by id1 id2; run; options nocenter; proc print data=test1; run; 输出结果如下: Obs id1 id2 extra 1 aa ab 3 2 aa ab 1 3 aa ab 2 4 aa ab 3
这些都是啥?
天外怪魔 2018-05-23
  • 打赏
  • 举报
回复
碧水幽幽泉 2017-09-19
  • 打赏
  • 举报
回复
SAS中nodupkey和nodup的区别

1.nodupkey会把同by variable里变量有相同值的observation都删掉。
这些observation包括那些与by variable里变量有相同值,但与剩下变量有不同值的observation。
如:
input id1 $ id2 $ extra ;
cards;
aa ab 3
aa ab 3
aa ab 2
aa ab 1
;
proc sort nodupkey data=test3;
by id1 id2;
run;
options nocenter;
proc print data=test3;
run;

输出结果如下:
Obs id1 id2 extra
1 aa ab 3

2.nodup会把那些仅与by variable里变量有相同值的observation删掉
如:
data test2;
input id1 $ id2 $ extra ;
cards;
aa ab 3
aa ab 3
aa ab 2
aa ab 1
;
proc sort nodup data=test2;
by id1 id2;
run;
options nocenter;
proc print data=test2;
run;

输出结果如下:
Obs id1 id2 extra
1 aa ab 3
2 aa ab 2
3 aa ab 1

但要注意的是nodup只会把相邻的且仅具有相同by variable变量值的observation删掉

如:
data test1;
input id1 $ id2 $ extra ;
cards;
aa ab 3
aa ab 1
aa ab 2
aa ab 3
;
proc sort nodup data=test1;
by id1 id2;
run;
options nocenter;
proc print data=test1;
run;

输出结果如下:
Obs id1 id2 extra
1 aa ab 3
2 aa ab 1
3 aa ab 2
4 aa ab 3
碧水幽幽泉 2017-09-19
  • 打赏
  • 举报
回复
10.by分组和class分组的区别

SAS的文档里对这个问题有专门的描述,大概可以包括以下几点:
1.区别不大一般可以互换
2.用by之前必须先sort 而用class则不必
3.在proc means 中如果不使用nway,用by则只会给出相应的分类的汇总统计数据;
而用class不仅会给出相应分类的统计数据而且还会给出不同组别所有可能组合的数据的统计数据;
4.by的结果输出多个表而class只有一个表
5.一般情况下用by比class要高效

最大的区别还是在于by语句对原始数据分组之前需要用sort by先排序,而class不需要。

11.datalines与datalines4语句
datalines语句
cards或datalines或lines 一样的,标志数据块的开始,单独占一行。
该语句必须是数据步的最后一条语句。

例如:
data mydb.student;
input id name $ sex $ score;
cards;
101 张三 男 98
102 李四 男 87
103 兰兰 女 95
;
run;

datalines4语句
如果数据行本身包含分号,可以使用 datalines4语句来完成。也可以使用该语句的别名为cards4或lines4。
datalines4语句必须使用4个连续的分号开始的一行来标记数据行结束。

例如:
data a;
input id name $;
cards4;
*lines4;
*datalines4
1 a;b
2 c;d
;;;;
run;
proc print;
run;

12.infile指令使用总结
infile指令使用总结
1、firstobs和obs指令,firstobs用于指定读入数据的起始行;obs用于指定读入数据的终止行。如
infile 'c:\temp.txt' firstobs=2 obs=100;

2、flowover/missover/truncover/stopover指令,该指令都用于读取记录末尾不完整的数据时使用,flowover是默认选项。
flowover:为infile语句的默认选项,如果当前的所读观测值长度小于变量长度时,跳过该观测,直接读入下一条观测值(不管下一条观测长度是否小于变量长度);
missover:如果当前所读观测值长度小于变量值,则用缺省值代替,然后继续读下一条观测;
truncover:读入所有观测;
stopover:当前所读观测值长度小于变量长度时,退出input语句,设置_error_=1;
scanover:当前记录行找不到@'character-string'表达式指定的字符串时,继续读取下一行,直到找到为止。

3、dsd(delimiter-sensitive data)指令,指定分隔符,默认为逗号(用delimiter='str'来指定分隔符)。
该指令可以将分隔符之间的数据作为一个独立的数据项进行分隔,但是会忽略引号内的分隔符,也就是将引号内的数据作为一个整体来看。
libname mydb 'c:\mydb';
data mydb.scores;
infile datalines dsd;
input Name: $9. Score /*冒号是告诉SAS遇到分隔符时停止读取,否则会读取默认的数位(即取8个字节长度)*/
Team: $25. Div $;
datalines;
Joseph,76,"Red Racers, Washington",AAA
Mitchel,82,"Blue Bunnies, Richmond",AAA
Sue Ellen,74,"Green Gazelles, Atlanta",AA
;
run;
proc print;
run;

4、LINESIZE指令,指明读入记录的长度,最大为32767,默认为256。用于输入数据文件数据行大于
256时,防止超过长度的数据丢失。
infile datalines dsd ls=1024;

5、infile n表示一次读取n行

待补充:
EOF,END,EOV用法。
DELIMITER= 和 DLMSTR= 用法
FILEVAR=variable 选项

13.input、put、input() 、put()用法与区别:
put()函数:把数值型或字符型变量转为字符型变量
input()函数:将字符型变量转化为数值型变量
input:读取变量
put:在日志窗口显示变量的值

日期转换:
30APR2017转换成2017-04-30 => put('30APR2017',yymmdd10.)
碧水幽幽泉 2017-09-19
  • 打赏
  • 举报
回复
input中的三种格式修饰符用法举例

列表方式输入语句中的修饰符有3个:":","~","&"。
下面分别介绍这3中修饰符的使用方法。
":"。当原始数据是以空格为分隔符时,要想对变量值长度不一致的变量规定统一长度必须使用该格式修饰符。
e.g:空格为分隔符时,对变量长度不一致的变量规定统一长度。
data new;
input Univ:$12. zip;
cards;
MIT 100023
TsinghuaUniv 100084
;
run;
<=> 等价于
data new;
length Univ $12.;
input Univ zip;
cards;
MIT 100023
TsinghuaUniv 100084
;
run;

"&"。字符输入值可能包含一个或几个空格。因为空格是列表读入方式默认的分隔符,所以如果要读入的数据值本身包括空格时就必须用此格式符。
e.g:空格为分隔符时,字符型输入值嵌有空格。
data user;
input name & $12. age;
cards;
Jiang zhu 20
Annie Zheng 31
I.Altman 60
;
run;

"~"。规定读入字符时保留引号。此选项只是在infile语句中与选项dsd一起使用时才有效。
e.g:dsd和"~"的作用,读入字符时保留引号。
data topic;
infile datalines dsd;
input speaker ~ $ 15. title ~ $ 40. location & $ 10. ;
datalines;
Song, "Credit Derivatives", Room 329
Zhu, "Credit Risk Management", Room 406
;
run;
proc print;
run;


炼数点金例子:
data A;
input name & $12. sex $ age;
datalines;
Li Li F 19
Wang Da Zhi M 20
;
proc print;
run;

":"修饰符。表示从下一个非空格列开始读入数据,直到:
1.遇到再下一个空格列;
2.读到预先定义的变量长度;
3.数据行结束。
哪个先出现就在哪结束

"&"修饰符。表示从下一个非空格列开始读入数据,直到:
1.遇到连续的两个空格;
2.在DATA步中定义的最初的变量长度;
3.数据行结束。
哪个先出现就在哪结束

588

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧