`
tibaloga
  • 浏览: 871328 次
文章分类
社区版块
存档分类
最新评论

如何成为一个游戏人工智能开发者

 
阅读更多
如何成为一个游戏人工智能开发者
作者:Paul Tozour June 11, 2008
译者:赖勇浩(http://blog.csdn.net/lanphaday) July 10, 2008
业界一直需要杰出的 AI 开发者,我想我可以在这里分享一些关于学习业界所需技术的看法,以帮助大家更好地进入游戏 AI 开发者的角色。
其实几个月前我就已经写了这一篇文章,但直到 Dave Mark 在 aigamedev.com 发表了这篇文章(http://aigamedev.com/discussion/industry-knowledge),我才决心发表出来。
首要的是,着眼于开发技能,在尝试专精之前先博览游戏开发领域所有的技能。
先博而后专
游戏工作室通常并不会把初级程序员任命为AI工程师。我们需要对游戏源码的方方面面都非常了解的工程师,这意味着他有多年游戏开发经验,而且能够随时插入到任一特定领域 “救火”。新进员工常常被要求帮助一个接近交货日期的项目,通常是填补空缺,做一些简单可控的或者团队中没有人能抽出时间(兴趣)来做的事。
你可以对你的面试官说明你对游戏 AI 工程非常有兴趣,而且打算以它为长期目标;但你要做好进入业界的前几年都与特定领域无缘的打算。
记住成为一个通才很重要,一个 AI 开发者需要坚实的游戏开发基础技能。对现代游戏引擎的各个组件都相当了解,因为从一个实际项目中获得的经验无可替代。
所以最为首要的就是学习你成为一个杰出工程师所需要的技能,对于大多数开发者来说,它包括:
u 精通 C++ 与 STL。
u 能够编写健壮的、可读的代码。
u 精通算法与数据结构。
u 精通面向对象理论。
u 务实的态度,愿意采用“自底向上”的方式解决问题。
u 了解代码测试和防御式编程(例如:利用C++语言特征去最小化出现缺陷的可能性和强制编译器与连接器在出现问题的时候“大叫一声“)。
u 愿意使用剖分器驱动的性能优化:在尝试动手优化之前先找出真正需要优化的地方,在使用奇技淫巧和手写汇编之前先使用算法优化。
u 精通如何高效使用内存资源
u 广泛理解现代游戏引擎架构
u 有坚实的3D 数学基础(对游戏中需要用到的部分而言)
u 良好的团队交流和合作精神
EDIT:这里强烈推荐一系列我书架上的通用工程技术书籍,包括《Effective C++》、《More Effective C++》、《C++ Coding Standards》、《Code Complete》、《The C++ Programming Language》、《3D Math Primer for Graphics and Game Development》等。(译注:这些书都有中文版。)
编写一个示例程序
想给公司留下一个深刻的印象?一个简单有效的方法是用 C++ 编写一个示例程序(是的,你可能使用 Java 或者 C#,但业界趋向于在游戏里排它地使用 C++,Java 和 C# 只在做工具的时候用到)。你的程序不必在图形上看起来很炫,但需要能够表现出你是如何做的和如何想的。不要使用你在学校的团队项目,你单独完成他,才能获得所有好评。
尤为重要的是你最好能够提供源代码,这样你可以给面试官一个 demo 和创建它的示例代码。努力让你的代码稳定、可读,尽可能地没有 bug,并且做好回答关于“当你编写代码的时候为什么作出这样的选择”的问题的准备。
坚持
当你打好了作为开发人员的基础,完成了一个很好的示例程序后,尽可能地与更多地公司接洽。然后努力地做独立编程测试,无论你在业界已经多久,这都能够增进你的技能。
当遇到很难的面试题时,尽量打起精神来尝试解决问题,但也不要不敢向面试官寻求帮助,面试也是在测试你如何处理压力,以及解决问题的决心,以及当你的思维原地打转或者毫无头绪时是否善于沟通。
务实
最后,如果你与面试官谈起 AI,切记要务实。你要意识到学术环境中的“人工智能”与我们口中的“游戏 AI”的不同,也要意识到业界宣扬的游戏 AI 并没有达到他们所承诺的那种高度。
当你和面试官谈起神经网络或者其它机器学习技术的时候,他们可能会有点排斥感,因此你应当能够准确地描述它们与游戏 AI 的关系(苛刻点说,可以认为仍然有一些开发者认为任何 AI 都是多余的)。
面试官非常善于认清一个人是不是鼻眼朝天的自大者,因此你必须尽力地展现你务实的一面。
弄清关于游戏 AI 的挑战很重要,也要清楚地认识到它适用于哪些方面。可以参考一下我不久前的一篇文章(http://www.ai-blog.net/archives/000145.html),里面列出了一系列 AI 开发者常常会遇到的问题。
从事 AI 开发是非常值得尝试的,如果你能够找到合适的公司和合适的项目的话。
祝您好运!
分享到:
评论

相关推荐

    GPT-4神器!老外七天制作新游戏,AI全自动完成所有游戏内容

    欢迎来到《AI解锁》(AI Unbound),这是一个扣人心弦的解谜冒险游戏,挑战你的智力,揭示了关于人工智能、人类协作和存在本质的故事。深入探索由两个卓越思想家构建的世界,并发现其核心的神秘秘密。 在五个神秘的...

    网易游戏高性能、分布式服务器开发框架 Pomelo.zip

    库, 包括了开发游戏的常用工具库, 如人工智能(ai), 寻路, aoi等 工具包, 包括管理控制台, 命令行工具, 压力测试工具等 pomelo特性 快速、易上手的游戏开发模型和api 高可伸缩的多进程架构, 支持MMO的场景...

    程序员学习Python的用处解析,举例说明如何用Python开发小游戏代码.docx

    学习Python可以帮助程序员在多个领域获得卓越的成就,包括数据科学、人工智能、Web开发、自动化和游戏开发。 数据科学是Python被广泛使用的最受欢迎的领域之一。它有广泛的数据科学库和工具,如NumPy、Pandas和...

    Silverlight MMORPG网页游戏源码

    碧月斩,直线穿梭类型技能,伤害范围为一个多边形,游戏中的激光等魔法同样可以类似处理,另外与圆月斩类似,附带弹开效果 地裂斩,直线波浪发散逐环伤害,附带Storyboard实现的击飞效果,如能配上很酷的素材可...

    手游核心技术实战.pdf

    所以,选择的时候,首要的不是语言,而是你选择用什么东西做游戏。语言只是其中的一部分,不能本末倒置。 在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点...

    python照片转成3D模型源代码

    不论是在游戏还是动画中,三维模型的引用...故今天我们将实现一个可以将照片的人体创建成三维模型FBX格式的项目。通过对项目的实现可以大量的节省建模工作者的时间,对游戏开发者和动画制作者而言将会是很大的福利。

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    10.2.4 为内存分配加上一个壳 302 10.3 RELEASE版本的调试 310 10.4 小结 311 第11章 脚本 313 11.1 为什么需要脚本 314 11.2 应该用脚本做些什么 316 11.3 脚本不应该做什么 318 11.4 如何嵌入脚本语言 319 11.5 ...

    python练习题目.rar

    Python应用场景广泛,可被应用于如今你所能想得到的相当多的软件开发和操作场景,目前已广泛应用于人工智能、云计算开发、大数据开发、数据分析、科学运算、网站开发、爬虫、自动化运维、自动化测试、游戏开发等领域...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    信息技术-python-语言基础.docx

    在数据科学领域,Python语言被广泛应用于数据分析、机器学习、人工智能等方面。在网络编程领域,Python语言被用来开发Web应用程序、网络爬虫等。在游戏开发领域,Python语言被用来开发游戏引擎、游戏脚本等。

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    10.2.4 为内存分配加上一个壳 302 10.3 RELEASE版本的调试 310 10.4 小结 311 第11章 脚本 313 11.1 为什么需要脚本 314 11.2 应该用脚本做些什么 316 11.3 脚本不应该做什么 318 11.4 如何嵌入脚本语言 319 11.5 ...

    基于stm32开发的usb hid 复合设备-键盘、鼠标、游戏pad,利用重力感应控制PC游戏。.zip

    自其面世以来,STM32凭借其广泛的适用性和卓越的特性,已成为嵌入式系统设计领域的主流选择之一,广泛应用于工业控制、消费电子、物联网、汽车电子、医疗设备、智能家居等多个领域。 内核与架构 STM32产品线采用了...

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics