五千年(敝帚自珍)

主题:初到贵宝地,灌一点游戏开发的东东 -- foundera

共:💬23 🌺4 新:
分页树展主题 · 全看首页 上页
/ 2
下页 末页
    • 家园 我该使用何种语言

      我该使用何种语言

        目 录

        1 C语言

        2 C++

        3 C++与C的抉择

        4 汇编语言

        5 Pascal语言

        6 Visual Basic

        7 Java

        8 创作工具

        9 结论

      --------------------------------------------------------------------------------

        原 文:What Language Do I Use

        译 者:Sunlxy

        版 本:the first edition(Ver 1.0)

      --------------------------------------------------------------------------------

        这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。

        This is a question that belongs in every game programming FAQ. It seems to be asked in a game development forum several times a week. It's a good question, though, and not one with an easy answer. There are computer languages that work better for some applications than others. Here is a list of the major programming languages used to write games along with descriptions, advantages, and disadvantages. Hopefully this list will help you make a decision.

      1、C语言

        如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。

        If FORTRAN and COBOL were the first compiled high-level languages, then C is their grandchild. It was created in the 70's by Dennis Ritchie as a tighter and more coherent successor to ALGOL, which was a structured successor to COBOL and FORTRAN. It was designed to be a smaller and simpler version of its predecessors, suitable for writing system-level programs, like operating systems. Before then, operating systems were hand-coded in assembly and were not portable. C was the first programming language that made portability a reality for system-level code.

        C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。

        C is a language that supports structured programming. That is to say that C programs are written as collections of disconnected function calls that run top-down rather than a single monolithic block of code with program control-flow happening via GOTO statements. Hence, C programs are generally easier to follow than monolithic FORTRAN and COBOL spaghetti-code. Actually, C still has a GOTO statement, but its functionality is limited and it is only recommended as a last resort if structured solutions are much more complicated.

        正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。

        True to its system-programming roots, it is fairly easy to interface C with assembly languages. The function-calling interface is very simple, and assembly language instructions can be embedded within C code, so linking in separate assembly-language modules is not necessary.

        优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。

        Advantages: Good for writing small fast programs. Easy to interface with assembly language. Very standardized, so versions on other platforms are similar.

        缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。

        Disadvantages: Does not easily support object-oriented techniques. Syntax can be difficult and lends itself to abuse.

        移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。

        Portability: While the core of the language and the ANSI function calls are very portable, they are limited to control-flow, memory management, and simple file-handling. Everything else is platform-specific. Making a program that's portable between Windows and the Mac, for instance, requires that the user-interface portions be using system-specific function calls. This generally means that you need to write the user-interface code twice. There are libraries, though, that make the process a bit easier.

        用C语言编写的游戏:非常非常多。

        Games Written in C: Lots and lots.

        资料:C语言的经典著作是《The C Programming Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的优秀书本。一本极好的教程是《The Waite Group's C Primer Plus》。

        Resources: The classic book about C is [The C Programming Language].It's gone through several iterations and has expanded to about three times its original size, but it's still a good introduction to the language. An excellent tutorial is [The Waite Group's C Primer Plus].

      2、C++

        C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。

        C++ is the object-oriented successor to C. Object-oriented, or OO, programs are the next step beyond structured programming. OO programs are built out of objects, which are packages of data and functions collected into discrete units. There are many libraries of objects available that make writing programs as simple as pulling together a collection of program "building blocks" (at least in theory). For example, there are many GUI and database libraries that are implemented as collections of objects.

        C++总是辩论的主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。

        C++ is the subject of controversy, especially in the game development community. There are features of C++, like virtual functions, that add an extra layer of decision-making to function calls, and critics are quick to point out that C++ programs can be larger and slower than C counterparts. C++ advocates point out, however, that coding the equivalent of a virtual function in C requires the same overhead. It's an on-going debate that's not likely to be decided soon.

        我认为,C++的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。

        In my opinion, the overhead of C++ is simply the price you pay for a better language. This same debate went on in the 60's when high-level programming languages like COBOL and FORTRAN started to displace hand-coded assembly as the language of choice. Critics correctly pointed out that programs written in high-level languages were inherently slower than hand-tuned assembly and always would be. High-level language advocates pointed out, however, that the slight performance hit was worth it because COBOL and FORTRAN programs were much easier to write and maintain.

        优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。

        Advantages: Much better than C for organizing large programs. Supports the object-oriented paradigm nicely. Libraries of common data structures, like linked lists and grow-able arrays, can remove much of the burden of having to deal with low-level details.

        缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。

        Disadvantages: Extremely large and complicated. Like C, the syntax lends itself to abuse. Can be slower than C. Not many compilers implement the entire language correctly.

        移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。

        Portability: Better than C, but still not great. While it shares the same disadvantage as C, most of the portable user-interface libraries are implemented as collections of C++ objects.

        使用C++编写的游戏:非常非常多。大多数的商业游戏是使用C或C++编写的。

        Games Written in C++: Lots and lots. Almost all commercial games are written in C or C++.

        资料:最新版的《The C++ Programming Language》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个假定你不知道。到目前为止,最好的C++教程是《Who's Afraid of C++》,如果你已经熟知C,那么试一下《Teach Yourself C++》。

        Resources: The latest edition of The C++ Programming Language is excellent. As for tutorials, there are two camps, ones that assume you know C, and ones you don't. By far the best ground-up C++ tutorials are Who's Afraid of C++ and Who's Afraid of More C++. If you already know C, try Teach Yourself C++.

      3、我该学习C++或是该从C开始(Should I learn C++, or should I start with C )

        我不喜欢这种说法,但它是继“我该使用哪门语言”之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不过使用这种方法有两个弊端:

        I thought this bore mentioning, as it's the second most commonly asked question next to "which programming language should I use?"Unfortunately, the answer isn't black and white. You could save a lot of time by just teaching yourself C and writing apps, but there are two disadvantages to this approach.

      你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建模更有效率的东西。

      You're missing out on what will likely be a much more effective way of modeling the data in your game. By not learning OO programming off the bat, you could be enforcing bad programming habits that you'll have to un-learn later. Trust me on this one.

      最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方法,如果你不学习OO,你将不得不“辛苦”的工作。

      Many of the biggest commercial games, including most first-person shooters, get by without C++. The authors of these programs, however, always insist that they're using object-oriented programming techniques even though they're using plain old C. If you want to just learn C, at least teach yourself OO programming techniques. OO is the perfect methodology for simulations (read: games), and you'll really be doing it "the hard way" if you push off learning OO.

      4、汇编语言(Assembly)

        显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。

        By default, assembly was the first computer language. Assembly language is actually a command-based representation of the actual instructions that your computer's processor runs. That means you will be dealing with the low-level details of your processor, like registers and stacks. If you're looking for a language that's English-like and is relatively self-documenting, this isn't it!

        确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单 ― 这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。

        By definition, anything you can do in any other language, you can do in assembly, only not as easily --of course, that's like saying that anywhere you can go in a car, you can go on foot, only not as easily. While the statement might be true, the later technologies made things much easier to use.

        总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。

        In general, assembly language is not used on its own for games. Games that use assembly language use it in bits and pieces where it can improve performance. For example, DOOM is written entirely in C with a couple of drawing routines hand-coded in assembly. They are the routines that are called a few thousand times a second, so making the routine as tight as possible really helped the performance of the game. It's fairly easy to write a function in assembly that is call-able from C, so using both languages wasn't a problem.

        特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。

        Special Note: The name of the language is "assembly". The name of the tool that converts assembly language into true machine code is called an "assembler". It's a common misnomer to call the language "assembler", so start out on the right foot by calling the language by its proper name.

        优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。

        Advantages: Is, by definition, the smallest and fastest language. A talented assembly programmer can write programs that are faster than anything that can be done in other languages. You'll be the first person to be able to take advantage of the processor's latest new features, because you can use them directly.

        缺点:难学、语法晦涩、坚持效率,造成大量额外代码 ― 不适于心脏虚弱者。

        Disadvantages: Difficult to learn, cryptic syntax, tough to do efficiently, and it takes much more code to get something done --not for the faint of heart!

        移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。

        Portability: Zilch. Since the language is designed for a single processor, it is not portable by definition. If you use extensions specific to a particular brand of processor, your code isn't even portable to other processors of the same type (for example, AMD 3DNOW instructions are not portable to other Pentium-class processors).

        使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。

        Games Written in Assembly: I don't know of any commercial games that are written entirely in assembly. Some games, however, have the most time-critical portions done in assembly.

        资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如Intel、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly Language: Step-By-Step》是很值得学习的。

        Resources: When you're looking for documentation for an assembly language, you're basically looking for the documentation for the chip. There is some online information at [Intel], [AMD][Motorola] for their processors. As for books, [Assembly Language: Step-By-Step] is well-reviewed.

      5、Pascal语言

        Pascal语言是由Nicolas Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,“空心粉式代码”变成了规范,而当时的语言又不反对它。Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBM PC上的 Turbo Pascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。

        Pascal was designed by Nicolas Wirth in the early 70's, because he was dismayed to see that FORTRAN and COBOL were not enforcing healthy structured programming disciplines in students. "Spaghetti code" was becoming the norm, and the languages of the time weren't discouraging it. Pascal was designed from the ground up to enforce structured programming practices. While the original Pascal was designed strictly for teaching, it had enough advocates to eventually make inroads into commercial programming. Pascal finally took the spotlight in a big way when Borland released Turbo Pascal for the IBM PC. The integrated editor, lightning-fast compiler, and low price were an irresistible combination, and Pascal became the preferred language for writing small programs for MS-DOS.

        然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转向了为Windows 编写程序的C++。Turbo Pascal很快被人遗忘。

        The momentum, however, did not stay. C compilers became faster and got nice built-in editors and debuggers. The almost-final nail in Pascal's coffin happened in the early 1990's when Windows took over, and Borland ignored Pascal in favor of C++ for writing Windows applications. Turbo Pascal was all but forgotten.

        最后,在1996年,Borland发布了它的“Visual Basic杀手”― Delphi。它是一种快速的带华丽用户界面的 Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。

        Finally, in 1996, Borland released its "Visual Basic Killer", Delphi. Delphi was a fast Pascal compiler coupled with a gorgeous user interface. Against all odds (and the Visual Basic juggernaut), it gained a lot of fans.

        基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写出难以理解的“聪明”代码,它同时也使得一些低级操作,如位操作变得困难起来。

        On the whole, Pascal is simpler than C. While the syntax is similar, it lacks a lot of the shortcut operations that C has. This is a good thing and a bad thing. It's harder to write inscrutable "clever" code, but it makes low-level operations like bit-manipulation more difficult.

        优点:易学、平台相关的运行(Dephi)非常好。

        Advantages: Easy to learn. Platform-specific implementations (Delphi) are very nice.

        缺点:“世界潮流”面向对象的Pascal继承者(Modula、Oberon)尚未成功。语言标准不被编译器开发者认同。专利权。

        Disadvantages: "World class" OO successors to Pascal (Modula, Oberon) have not been successful. Language standards are not adhered to by compiler-makers. Proprietary.

        移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。

        Portability: Dismal. The features of the language changes from platform to platform, and there are no portability toolkits to handle platform-specific features.

        使用Pascal编写的游戏:几个。DirectX的Delphi组件使得游戏场所变大了。

        Games Written in Pascal: A couple. The DirectX components for Delphi have made the playing field more level.

        资料:查找跟Delphi有关的资料,请访问:Inprise Delphi page。

        Resources: The find out about Delphi, check out the Inprise Delphi page.

      6、Visual Basic

        哈,BASIC。回到八十年代的石器时代,它是程序初学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无返顾的使用了GOTO充斥的“空心粉式代码”。当回忆起BASIC的行号和GOSUB命令,没有几个人能止住眼角的泪水。

        Ahh, BASIC. Way back in the stone-age of the 80's, it was the first language for budding programmers. The original incarnations of BASIC, while easy to learn, were horribly unstructured, leading to the a rash of GOTO-laden "spaghetti-code". Not many people wipe away tears when reminiscing about BASIC's line numbers and the GOSUB command.

        快速前进到九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂贵。为了与HyperCard一决高下,微软取得了一个小巧的名为Thunder编程环境的许可权,并把它作为Visual Basci 1.0发布,其用户界面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也被去除。实际上,这门语言与那些内置于TRS-80、Apple II及Atari里的旧的ROM BASIC相比,更像是带Basic风格动词的Pascal。

        Fast-forward to the early 1990's. While not the monster that Apple was hoping for, HyperCard was a compelling little programming environment that had no equal under Windows. Windows-based HyperCard clones like ToolBook were slow, clunky, and expensive. To finally compete with HyperCard, Microsoft licensed a neat little programming environment named Thunder, releasing it as Visual Basic 1.0. The user-interface was very innovative for the time. The language, while still called Basic (and no longer all-caps), was much more structured. Line numbers were mercy-killed. The language was, in fact, much closer to Pascal with Basic-style verbs than the old ROM BASIC that was built into every TRS-80, Apple ][, and Atari.

        经过六个版本,Visual Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着“把代码关联到用户界面”的主旨。这使得它在与即时编译结合时变成了一个快速原型的优异环境。

        Six versions later, Visual Basic is pretty deluxe. The user-interface has made some changes, but still retains its "attach bits of code to the user-interface" motif. This, in combination with instantaneous compiling, makes it a terrific environment for fast prototyping.

        优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX 7已准备提供Visual Basic的支持。

        Advantages: Neat IDE. Easy to learn. Instantaneous compiling makes for very fast and easy prototyping. Lots and lots of add-ons available. While there are currently third-party DirectX add-ons for Visual Basic, DirectX version 7 is going to include support for Visual Basic right out of the box.

        缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。专利权。

        Disadvantages: Apps are large and require several large runtime DLL's to run. While form and dialog-based apps are easy to make, writing good graphical apps is more difficult. Calling Windows API functions is clunky, because VB data structures don't map nicely to C. Has OO features, but is not fully object-oriented. Proprietary.

        移植性:非常差。因为Visual Basic是微软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。

        Portability: Worse than dismal. Since Visual Basic is owned by Microsoft, you're pretty-much limited to whatever platforms they've ported it too. That means that you've got the choice of Windows, Windows, or Windows. Note that there are, however, a couple of tools that help convert VB apps to Java.

        使用Visual Basic编写的游戏:一些。有很多使用VB编写的共享游戏,还有一些是商业性的。

        Games Written in Visual Basic: A few. There are lots of shareware games done in VB, and a couple of commercial offerings.

        资料:微软的VB页面有一些信息。

        Resources: The [Microsoft VB page].

      7、Java

        Java是由Sun最初设计用于嵌入程序的可移植性“小C++”。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画 ― 它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。

        Java was originally designed by Sun to be a portable "small C++" that could be used in embedded applications. The idea of running little applications in a web-page really captured people's imaginations, so the language caught on quickly. It turned out that Java wasn't just suitable for embedding animated banners in web pages --it was a downright nifty little language for application programming! The "virtual machine" nature, garbage collection and lack of pointers made it easy to make bulletproof apps that didn't crash and had no resource leaks.

        虽然不是C++的正式续篇,Java从C++ 中借用了大量的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。

        While not an official "sequel" to C++, Java borrows very heavily from C++ syntax. It dumps many of the more difficult C++ features to reveal a rather compact and easy-to-learn language. Unlike C++, Java enforces object-orientation with a heavy hand. Writing a non-OO app in Java is as difficult as writing spaghetti-code in Pascal.

        优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。

        Advantages: Binaries are portable to other platforms. Apps can run embedded in web pages. The included class library is reasonably standardized and extremely robust. Automatic allocation and garbage collection all but eliminates resource leaks in applications. Zillions of code examples on the web.

        缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的“受祝福”功能的速度实在太慢。

        Disadvantages: Uses a "virtual machine" to run portable byte-code rather than native machine code, so apps are slower than true compilers. There are technologies (like "Just In Time" compilers) that greatly improve the speed of Java, but the speed will likely always lag behind true machine-code solutions. Early features like the Abstract Windowing Toolkit were not well thought-out and, while officially abandoned, have to hang around for backward compatibility. Is very high-level, which makes dealing with any low-level machine features very difficult. Sun is pretty slow in adding new "blessed" features to the language.

        移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。

        Portability: The best of the lot, but still not what it should be. The low-level code is very portable, but a lot of the UI and newer features are wobbly on some platforms.

        使用Java编写的游戏:网页上有大量小的Applet,但仅有一些是商业性的。有几个商业游戏使用Java作为内部脚本语言。

        Games Written in Java: Lots of little applets in web pages, but only a couple of commercial offerings. Several commercial games use Java as the internal script language.

        资料:Sun的官方Java页面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好去处。

        Resources: [Sun's official Java page] has some good info. IBM also has an excellent [Java page]. The [JavaLobby] is the best place to go for news about Java.

      8、创作工具

        上面所提及的编程语言涵盖了大多数的商业游戏。但是也有一个例外,这个大游戏由于它的缺席而变得突出。

        All of the programming languages mentioned above cover pretty-much every commercial game out there. There is one exception, but it's such a big one that it would be conspicuous by its absence.

        “神秘岛”。没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说“神秘岛”99%是使用 3D建模工具制作的,其根本的编程逻辑是在HyperCard里完成的。

        Yep, the best selling commercial game of all time wasn't written in any of the above languages. While some would say that 99% of Myst was written using 3D modeling tools, the underlying program logic was done in HyperCard.

        多数创作工具有点像Visual Basic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上面所说的单独的语言那样健壮。

        Most authoring tools are a bit like Visual Basic, only they work at a much higher level. Most of the tools use some kind of click-and-drag flowchart motif to model control flow. Many contain embedded interpreted programming languages, but these languages aren't nearly as robust as the standalone languages mentioned above.

        优点:快速原型 ― 如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程序。

        Advantages: Fast prototyping --if your game fits the motif the tool's made for, you can probably get your game running faster than any other language. In many cases, you can make a rudimentary game without writing any code. You can broadcast many authored apps on web pages with plug-ins like Shockwave and IconAuthor Player.

        缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。

        Disadvantages: Proprietary, so you're at the mercy of the tool-maker as to what features will be added. You've gotta really look at these tools to see if they'll do everything that your game's gonna require, because there are things that authoring tools simply can't do. Some of these tools produce frighteningly bloated apps.

        移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。

        Portability: Since authoring tools are proprietary, your portability is limited to whatever they offer. Some systems, like Director, can author and run on several platforms. Some tools can author on one platform but play on several. Some are single-platform beasts.

        使用创作工具编写的游戏:“神秘岛”和其他一些同类型的探险游戏。所有的Shockwave游戏都在网络上。

        Games Written in Authoring Tools: Myst and a few other "exploration" games of the same genre. All of the Shockwave games on the web.

        资料:Director、HyperCard、SuperCard、IconAuthor、Authorware。

      9、结论(Conclusion)

        你可能希望得到一个关于“我该使用哪种语言”这个问题的更标准的结论。非常不幸,没有一个对所有应用程序都最佳的解决方案。C适于快而小的程序,但不支持面向对象的编程。C++完全支持面向对象,但是非常复杂。Visual Basic与Delphi易学,但不可移植且有专利权。Java有很多简洁的功能,但是慢。创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序起作用。最好的方法是决定你要写什么样的游戏,并选择对你的游戏支持最好的语言。“试用三十天”的做法成为工业标准是件好事情。

        You probably were hoping for a more cut-n-dry conclusion to the "what programming language do I use" dilemma. Unfortunately, there's no solution that's optimal for all applications. C is suited for fast and small applications, but doesn't support OO programming well. C++ has very complete OO support, but is frighteningly complicated. Visual Basic and Delphi are easy to learn, but are non-portable and proprietary. Java has a lot of neat features, but is slow. Authoring tools can get your app working quickest, but are only useful for a narrow range of applications. It might just be best for you to figure out what kind of game you're writing and pick the language that would best support your game. It's a good thing that the "try it free for 30 days" offer has become the industry norm :-)

      --------------------------------------------------------------------------------

        作者简介

        John Hattan是位于德克萨斯州的Watauga里最大的软件公司 ― Code Zone的主要负责人。

    • 家园 非常好

      非常好

    • 家园 好东东。
    • 家园 very good!!!!! I have saved it.
    • 家园 游戏制作入门指南

      游戏制作入门指南

      我经常被问及:一个具有很少甚至没有编程经验的人要如何开始游戏制作。直到目前为止,我总是尽我所能一个一个解答。然而,问题的数量已经增长到了一个难以处理的水平,于是,我便决定把所有的建议汇总在一篇文章里作为参考提供给人们。

        I often get asked how someone with little or no programming experience can get started in game development. Up until now, I have always tried to help them along as much as I can on a one-to-one basis. However, because the number of questions has grown to an almost unmanageable level lately, I decided it is time for me to put all my advice in an article to serve as a general resource.

        这篇文章主要面向那些想开发自己的游戏,但仅有一点点或没有半点编程经验的人们。实际上,我也假定读者根本没有任何的编程知识。我将把重点放在游戏开发的编程和设计方面,而不是艺术方面。我也不准备对游戏行业进行论述(因为这个话题的资料太多了),但是,我会带你浏览一下在制作游戏之前需要做的一些事情。该说明的一点是,不要将我这里所介绍的方法当作唯一的或最好的学习游戏制作的路径,但对于我和其他人来说,它是有效的。

        This article is intended for people who want to make their own games, but who have little or no programming experience. In fact, I'm going to assume the reader has no programming knowledge at all. I will focus mainly on the programming and design aspects of game development, and not the artistic side. I am not going to cover actually getting into the industry (because there are already ample resources for that) but I will walk you through the things you need to do to get to the point that you can make your own games. Finally, the path I lay out here should not be looked at as the only ?or even the best ?route to learning how to make games, but it has worked well for me and for other people.

      1、选择一门语言

        Choosing a Language

        第一件要做的事就是选择一门语言。你有一大堆的选择,包括 Basic、Pascal、C、C++、Java 等等,同样也有一大堆关于哪门语言最适合初学者的争论。欲了解各种语言的优缺点,请参阅 John Hattan 的绝妙文章《我该使用什么语言》。

        The first thing you will need to do is to choose a language to program in. You have a lot of choices, including Basic, Pascal, C, C++, Java, etc., and there is a great deal of debate over which language is best for beginners. For a discussion of a number of popular languages, see John Hattan's excellent article, What Language Do I Use?

        我这里建议使用 C 和 C++。有些人认为这些语言对于初学者来说太难了,但从我个人角度来说我是反对这个观点的,因为我自己就是从 C++ 起步的。另外,C/C++ 是目前最广泛应用的语言,因此,你能找到大量的资料和帮助。至于先学 C 还是先学 C++ 的问题不大,因为一旦你学习了其中一种,再学习另外一种就没太大问题了。不过,如果你一开始就选择 C++,请确信在学习面向对象编程之前,你已经了解并掌握了面向过程编程。(比如说,如果你在不使用类的前提下仍无法编好程序,先不要急于学习类)

        I'm going to recommend starting with C and C++. Some people will say that those languages are too advanced for beginners, but because I started with C++ myself, I tend to disagree. In addition, C/C++ is the most widely used language today, so you will be able to find a wealth of resources and help. It does not really matter whether you learn C or C++ first, because once you learn one, learning the other will be a trivial matter. However, if you choose to learn C++ first, make sure you understand and can use procedural programming before learning object-oriented programming (i.e. hold off on learning about classes until you can program well without them).

        如果你发现学习 C/C++ 是一件很困难的事,不要紧,回过头选一门比较简单的语言来学,比如 Basic 或 Pascal。不过我认为,如果你坚持下去,并找一些好的资料,学习 C/C++ 的问题不大。

        If you start with C/C++ and it turns out to be too difficult, there is nothing wrong with going back and learning a simpler language, such as Basic or Pascal. But I really think that if you stick with it and find the right resources, you should have no problem with C/C++.

        你的下一个问题是:我如何学习 C/C++?我很高兴你问这个问题。最好的方法是去听课。有没有老师帮助解答问题,对于你的发展影响巨大,而且编程作业将确保你确实掌握了所学的东西。

        Your next question should be, "How do I learn C/C++?" I'm glad you asked. The best way is to take a class. Having an instructor and TAs available to answer questions and help you along makes a huge difference, and the programming assignments will ensure that you actually apply what you are learning.

        如果听课不在你的考虑范围内,下一个最好的办法就是找一些好书。不要把注意力放在那些“大全”书上,因为你终究会买几本。我建议你去一个本地书店,花点时间浏览一下介绍 C 和 C++ 的书,直到找到你能理解并能从中学到东西的一本。同时,你可能还想买几本进阶书或是一本参考书,但一旦你具有了这门语言的部分知识,你会对你需要什么有更好主意。可以在网站BOOKS频道中找到一些建议。

        If taking a class is not an option for you, the next best thing is to get some good books. Don't stress too much about picking the "perfect book", because you are probably going to buy several eventually. I'd suggest going to a local bookstore and spending some time browsing the introductory C and C++ books until you find one that you understand and think you can learn from. In time, you will want to pick up some more advanced books, and probably a reference, but once you have some knowledge of the language, you will have a better idea of what you need. See our books section for some suggestions.

        在此,我简要的说明一下我见过的很多入门程序员,尤其是年轻人关心的事情:没有钱买书或其他东西。首先,有许多资源是免费的,包括图书馆和 Macmillan Computer Publishing (他们的网站 www.mcp.com 上有数百本编程的书)。其次,如果你想成为一名优秀的程序员,你不得不考虑在这上面的投资。利用各种手段(合法的 ;<)去弄点钞票来。

        At this point, I want to take a moment and address something that I have seen as a concern for a lot of beginning programmers, especially younger ones: not having money to buy books and other things. First, there are free resources available, including your local library, and Macmillan Computer Publishing, which has hundreds of programming books online at http://www.mcp.com/personal. But second, if you really want to become a good programmer, you have to plan on making an investment in it. Use whatever (legal ;<) means you have to come up with some cash.

        网络上有大量的 C 和 C++ 的学习教程,但是我认为这些教程作为你学习书本的参考要比作为单独的材料好得多。

        There are also a number of tutorials available on the web for learning C and C++, but I have found that tutorials are better for supplementing what you learn in books than for being a stand-alone resource.

      2、选择合适的编译器

        Picking the Right Compiler

        你写的程序,或源码是以文本文件存储的,你甚至可以用记事本来写 C/C++ 程序。但是,必须有样东西能把这些源码转化成一个可执行文件。对于 C 和 C++ 来说,这样东西就是一个编译器。

        The programs you write, or source code, is stored as a text file, and you can even use Notepad to write a C/C++ program. But something needs to take that source code and convert it into an executable file. In the case of C and C++, that something is a compiler.

        现在有大量的编译器存在,其中有许多是免费的。选择一个合适的编译器是非常重要的,而免费编译器有个好处就是你能一个一个的试,看哪个你最喜欢。但是,免费编译器经常是比商业编译器功能少或缺少良好的技术支持。幸运的是,大多数商业编译器都有与完整版功能相同,但价格便宜许多的介绍版或学习版,唯一的限制是,你不能发布使用该编译器开发的程序(这点你肯定维持不久)。

        There are a large number of compilers available, including many free ones. It is important to choose a compiler that you are comfortable with, and the free ones have the advantage that you can try them all out and see which one you like best. However, free compilers are often not as full-featured or well-supported as commercial ones. Fortunately, most commercial compilers come in introductory or academic versions, which cost much less and usually have the same features as the full version, with the only restriction being that you cannot distribute programs you create using it (which you are not going to be doing for a while anyway).

        基本上,你选择什么样的编译器取决于你能花多少钱、你将在什么操作系统和平台上开发程序。如果你准备为 Windows 作贡献,我强烈建议使用微软的 Visual C++。它具有一个功能强大的开发环境,能让你倍感轻松,再也没有其他编译器能比它更适合开发 Windows 软件了。如果你是名学生,你可以以极低的价格获得一份拷贝。如果你准备在 DOS 下开发程序,你最好使用免费的 DJGPP。

        Ultimately, the compiler you choose will depend on how much you can spend and which operating system and platform you will be developing for. If you are going to be developing for Windows, I strongly suggest using Microsoft Visual C++. It has a powerful development environment that will make a lot of things easier for you, and there is no question that no other compiler is more well-suited to developing Windows applications. If you are a student, you can obtain a copy for a significantly reduced price. If you are going to program in DOS, your best bet is probably DJGPP, which is free.

      3、选择一个目标平台

        Choosing a Target Platform

        虽然你可能最终会为各种平台开发程序,你还是应该选择其中之一进行学习。当你学习语言的时候,在没进入图象编程之前,你大概想使用一个非 GUI 的操作系统,比如 DOS 或 UNIX。这有助于你将注意力集中在语言学习上,从而避开一些高层的问题,如 Windows 编程。

        Although you will probably develop for a number of platforms eventually, you are going to need to pick one to learn in. While you are learning the language, and before you get into any programming involving graphics, you will probably want to use a non-GUI operating system, such as DOS or UNIX. These will avoid the overhead involved with, for example, Windows programming, and let you just focus on learning the language.

        不过,一旦你准备开始制作游戏,你就该考虑转换你的目标平台了。一下是几个常用的平台:

        Once you are ready to start making games, though, you should consider changing your target platform. Let's look at the more prominent options.

        Windows:如果你想在游戏行业里专职工作,或者你想让一大群人玩你的游戏,那么 Windows 是你的首选。你的目标客户大多数使用 Windows,且这个情况不会很快改变。目前大量的 Windows 游戏使用一种你大概听说过的名为 DirectX 的技术。DirectX 是一个允许你直接操作硬件的程序库,你可以依靠它写出高性能的游戏来。

        Windows: If you want to eventually work professionally in the games industry, or if you just want a lot of people to be able to play your game, then this is the platform you want to choose. The majority of your target audience uses Windows, and I don't see that changing any time soon. The vast majority of games today are made for Windows using a technology you have probably heard of called DirectX. DirectX is a library that allows you to access the hardware directly, which means you can write high-performance games.

        DOS:DOS 曾经是游戏的主要平台,但这已是昨日黄花。虽然有些爱好者仍然在为 DOS 开发游戏,但是已经没有商业游戏是为 DOS 开发的了,而且, DOS 正由于微软停止对它的支持而走向衰败。如果你刚开始做游戏,别选择 DOS,如果你已经这样做了,不要再停留了。注意:因为有很多游戏编程的书是为 DOS 写的,学习这些书时可能会认为在 DOS 里开发游戏有理有据。但是,随着 Windows 游戏编程书籍数量的增长,这种争论变得越来越少,也越来越没有意义。

        DOS: DOS used to be the dominant platform for games, but those days are gone. Although some hobbyists are still making games for DOS, no commercial games are being made for DOS, and it will continue to decline as Microsoft stops supporting it. If you are just starting to make games, don't choose DOS, or if you do, don't stay with it for long. Note: because there are a large number of game programming books written specifically for DOS, there may be some justification to developing games in DOS while learning from these books. However, as the number of books for game programming in Windows grows, this argument becomes less and less valid.

        Linux:Linux 是 UNIX 的一个变种,由于它具有稳定、便宜、反微软情节等多个因素,它正变得越来越受欢迎。虽然目前的 Linux 用户还比较少,但是随着它的热爱者和市场的潜在增长,它也成为了作为目标平台的可行选择。

        Linux: Linux is a UNIX variant that has become popular lately for a number of reasons, including stability, price, and anti-Microsoft sentiment. Although the number of Linux users is still relatively small, the enthusiasm surrounding it and the potential growth of the market make it an viable choice as a target platform.

        Macintosh:苹果机拥有一群数量不多但非常忠诚的追随者,几乎每个我见过的苹果机爱好者都有一个强烈渴望更多苹果机游戏的愿望。我没有看过多少在苹果机上开发游戏的资料,但我确信确实有,因此,这也是个合理的选择。

        Macintosh: The Mac has a very loyal following in numbers that are not insignificant, and nearly every Mac enthusiast I have talked to has expressed a desire for more and better games for the Macintosh. I have not seen as many resources for making games for the Mac, but I am sure they are out there, so this may be a valid option too.

        家庭游戏机:游戏机(如 Playstation、N64、Dreamcast 等等)游戏市场非常巨大,前景可观。然而,由于种种原因,开发非商业性的游戏机游戏在目前来说是不太可能的。你为游戏机开发的游戏大多都会被商业游戏公司买走。

        Consoles: The console (i.e. Playstation, N64, Dreamcast, etc.) game market is huge, and there is certainly a future in console game development. However, developing console games in a non-commercial setting is not really plausible at this time, for a number of reasons. If you develop for consoles, it will probably be while employed by a commercial game studio.

      4、充足电

        On to the Good Stuff

        是讨论真正做游戏的时候了。虽然我所说的大部分内容适用于其他语言,为简单起见,我将假定你选择了 C/C++ 来进行 Windows 编程。

        Now it's time to discuss actually making games. For simplicity, I'm going to assume that you have chosen to program in C/C++ for Windows, although most of what I say will apply if you chose otherwise.

        首先,在你考虑如何开始做游戏之前,你应该能很好的掌握 C 和 C++。你应该了解并精通指针、阵列、结构、函数,以及类等。做到了这一点,你就可以开始制作游戏了。

        First of all, before you even think about starting to make games, you should have a good command of C and C++. You should understand pointers, arrays, structures, functions, and probably classes, and you should be proficient in using them. If so, you are ready to start making games.

        本文无法教授你关于制作游戏所该了解的一切。幸运的是,这也不是必要的。有很多关于这方面的书,网上也有数以百计的教程。GameDev.net 应该会有目前你所需要的一切。下面是我对你起步的一些建议:

        This article can't possibly teach you everything you need to know about making games. Fortunately, it doesn't have to. There are many books on the subject, and hundreds of tutorials on the web. GameDev.net should have everything you need right here. Here's how I suggest you start:

      学习一本或几本书。对于 Windows 游戏的初学程序员,《Tricks of the Windows Game Programming Gurus 》是一本极好的Windows编程入门教程。在这个站点里拥有许多本站 Books section 里所列出的好书。阅读这些书籍,运行所有的例程,反复研读你不理解的章节。

      使用网上教程补充书本的不足。书本除了阐明一些你阅读的东西外,通常也会包含一些书本上没有涉及的主题。

      找专家进行咨询。如果你无法从书上或教程中找到答案,到本站的留言版或聊天室来,这里有许多乐于提供帮助的人。

      Get one or more books. For beginning game programmers in Windows, Tricks of the Windows Game Programming Gurus is the perfect place to start. Besides that, there are a number of other good books in our Books section. Read through the books, trying all the examples, and rereading parts you don't understand.

      Supplement what you read with online tutorials. Besides clarifying things you read, they also cover topics not covered in books.

      Ask the experts for help. If you cannot find answers to your questions in books or tutorials, take advantage of our message board and chat room. There are a lot of people out there willing to help out.

        不要把上面几点当成是个有序的过程,而应当看作是一个循环往复的并行过程。

        This should not be looked at as a sequential process, but as a silmultaneous process that is repeated continually.

        仅仅是学习、思考是远远不够的,你应当把你所学的东西付诸实践。从一个简单的游戏开始,逐步发展。你可以阅读一下 Geoff Howland 的文章《How do I Make Games? A Path to Game Development》。

        It is not enough to just learn, though, you must apply what you learn. Start off with a simple game, and work up from there. See Geoff Howland's article, How do I Make Games? A Path to Game Development.

        首先,为自己的工作制定一个计划。不要急于加入一个团队,因为那只会减缓你的学习进程。当你囊中拥有数个游戏时,你将为一个团队作出更大贡献。

        At first, plan on working on your own. Don't rush to join a team, because it will only slow down the learning process. Once you have several games under your belt, you can make a much larger contribution to a team anyway.

        关于书本,有件事我要提醒一下:你需要阅读除了游戏编程外的其他书籍。为了制作出你在商店货价里看到的各种游戏,你将不得不钻研那些比大多数游戏编程书籍所授内容更高深的话题。有些可能你能从教程中找到,但是,你还是有必要买几本关于图形、人工智能、网络、物理等等方面的书。这是获得计算机科学学位的必经之路,因为你将被要求学习一些你认为与游戏编程无关的课程,而实际上它们是相关的。

        One thing I'd like to mention about books: You will need to read more than just game programming books. To be able to create the kinds of games you see on store shelves, you are going to have to delve into topics more advanced than those covered in most game programming books. Some of what you need can be found in tutorials, but you are also going to need to pick up some books on graphics, artificial intelligence, networking, physics, and so on. This is where pursuing a degree in Computer Science comes in handy, because you will be required to take classes that you may think don't apply to game programming, but they do.

      5、总结

        Wrapping Up

        这里有一些能产生巨大差别的技巧:

        Here's a few more tips that can make a huge difference:

      要只知道聚集知识,应用是关键。除非你使用了,否则你无法确实知道和理解这些东西。做一些小的测试程序来应用你所学的东西,并切实完成书上每个章节后的习题。

      玩大量的游戏。你会因此找到灵感,从而帮助你制作更优秀的游戏。当然,这也是一种受欢迎的解除编程压力的调剂方式。

      帮助别人。在你帮助别人的过程中,你会学到更多东西。

      完成你的作品。不要陷入这样一种思想的圈套中:“我知道我可以完成这个游戏,但是我有个更好的主意,我要换做这个好的项目。”如果你能坚持有始有终,你会学到更多的东西,并且你有作品证明你不仅仅是空谈。在你具有丰富的经验之前,做得简单一点,不要尝试制作一个又大又复杂的游戏。

      Don't just accumulate knowledge, apply it. You will never really know or understand something until you use it. Make little demo programs that use the things you are learning. Actually do the exercises at the end of the chapters in the books.

      Play a lot of games. Doing so will give you ideas and help you make better games. It will also provide a welcome relief from programming.

      Finish what you start. Don't fall into the trap of thinking "I know I can finish this game, but I have an idea for a better one, so I'll move on to it instead." You will learn so much more if you

      finish the games you start, and you will have something to prove that you are not all talk. To make this a little easier, don't try to make really big or complex games until you are more experienced.

        出发吧!你该动手制作 Quake 4 了。当然,可能不那么容易,但至少你可以从这个方向出发,并且知道去哪里查找更多的信息。经过多年的努力工作,你会成功的!

        There you go! You should now be well on your way to making Quake 4. Well, not quite, but at least you can start on that path and know where to look for more information, and with years of hard work, it can happen.

      --------------------------------------------------------------------------------

        作者简介

        Dave Astle 从 1984 年开始制作电脑游戏。白天他在 ROI Systems 公司任软件工程师,晚上他领导 Myopic Rhino Games 的开发小组。有时他也抽空来帮帮 GameDev.net ,使其成为同行中的佼佼者。有时间他也需要休息了。

    • 家园 开始做游戏

      开始做游戏

      你的理想游戏

        每个玩家似乎都构思着一个梦想中的游戏。那么,我们就来谈谈游戏的构思。你应该知道,那些最终敲开游戏之门的作品是集思广益而得来的。在这个文章中,我们将谈论如何将头脑中的构想组织成一个贯通的、有实现性的设计方案。我们要探明那些你构思中的,可能会遭遇到的情况和潜在的缺憾。让我们开始吧……

      创意从何而来

        创意可以来自任何地方。你可以从其他游戏、或者你的梦境、或者电视节目、或者电影、或者你的朋友和熟人,甚至那些刚刚从新闻组或聊天室中认识的人,从他们中间获得创意。为了成为一名有抱负的设计师或程序员,你最好身边经常带着笔和纸,在创意萌发时将它们记录下来。许多专业的设计师总是将笔记本带在身边。尽管大多数创意或许不是新颖的,但至少值得你努力使它们在你的游戏中展现原始的样子。市场上已经有太多的"我也这样"了,努力不要让你的创意也成为简单的复制品。

        如果你为某个游戏小组工作,那么可以通过自由讨论来获得独到的见解。这个办法常常被专业的小组采用,并贯穿整个开发过程。最初的创意来自于所有队员坐在一起为新的游戏畅所欲言。每个被引入团队的新创意都会在讨论后进行尝试和测定,去判断它是有益的还是不好的。最后,团队将选择那些听起来对研发最好的建议。

        如果你打算进行自由谈论,最好先设立一个强有力的领导人,将事情控制在轨道上。如果没有能够做出裁决的领导人,那么这些创意会变成无谓的争吵,那就一事无成了。一旦创意被团队采纳,就需要充实其中的细节。在整个开发过程中使用独特的技术,去解决各式各样的问题并找到原因。

      你能做到吗

        不论是对初学者还是有经验的人而言,持有过多的理想是最大的过失。不要去计划那些根本不可能实现的或者远远超出制作实力的想法。这种错误或偶尔或经常在所有等级的开发者中发生,这是很普遍的事情。那么,让我们看看如何避免这种情况的发生。

        太多的理想

        这大概是游戏设计中最普遍发生的错误。很多商业性的游戏都会因为制作时间的限制,而不得不从原始的方案中砍掉一些设计。有很多这样的案例,项目在开始时很大,而后被删减的很简单。

        如何避免这种失误?喔,作为一名初学者,最好把你的设计做得短小和简单。不要试着把你头脑中巨大的梦想一次倒出来。如果你真的这样做,很可能因为经验不足而倍受打击,这是会让你失去信心的。开始时做得小一些、简单一些,让事情不要花费太多气力。这样做你可能不会得到很多经验,但却可以建立自己的信心。这同样是一个好的建议,使得你不至于一开始就花费太多的时间和精力。

        还有一件需要避免的事情,就是在设计一个游戏时有太多的内容。许多初学者为每一件事情都设想了厚重的环境,却有很多无谓的设计混在其中。如果要完成这样一个游戏,需要太长的时间和一个庞大的制作队伍。努力让你的设计保持在可以实现的范畴内。

        不可实现的

        另一个常犯的错误是过高的估计自己的技术实力。在许多方面,主流的技术也是有许多限制的。尤其在基于三角形技术的三维游戏中。例如:尽管三维模型可以非常接近的体现生命体、或是高度细节的场景,但你恐怕没有任何途径在实时的三维游戏中实现它们。这些三角型计算将非常消耗资源以至于会让三维引擎崩溃。

        在做实时三维游戏时,你需要对很多难以权衡的事情做决策。你要熟悉所选择的引擎的技术限制,只有这样才可能执行一个很困难的设计。即使你制作自己的三维引擎也是会被限制在主流技术领域中的。经验在你决定事情的可实现性上会有很大帮助。而且,设计的简单一些以获得经验是最好的起步方法。

        一旦你觉得拥有了一个可执行的游戏设计,那么对于其可行性的最终测试,将通过做一个概念验证而实现。后文会用一个单元来解释什么是"概念验证"。

        超出能力范围

        最后一个普遍存在的错误是企图完成某事但却丝毫没有准备。首先,你要在短小、简单的项目中锻炼自己的技能。没有一个专业的游戏开发者是直接从世界级游戏起步的。不要认为id Software的那些家伙是由Wolfenstein 3D起步的,他们第一次的作品是一个类似Commander Keen的简单的卷轴游戏。

        正象其他值得努力的事情一样,你不能起步过高。想让你梦想的游戏成为一个优秀的作品,需要不断地制作小的项目,然后让它们逐渐复杂起来。最终,你的技能会磨练到一个可以制作出迷人游戏的层次。这需要你的耐心和钻研。罗马城不是在一天里完成的,也不是由伟大的游戏开发者建造的。

      写下来

        一旦有了细致的创意,你应该把它活灵活现地写在纸上。在专业游戏设计师的领域中,称这种文档为策划案。大多数商业游戏项目都有自己的策划案。这些文档在开发过程中担当着地图的作用,并且可以帮助你将精力集中在设计上。

        策划案包含着所有细节,用以描述你的游戏计划。它可以长或者短,或者包含一些你渴望描述的细节。书写这些文档是没有标准格式的,如果你希望发行商购买你的游戏,那么在策划案中大致要包含以下几个内容。

        下面的列表是策划案中大致要包含的事项:

      1) 游戏的概述

      2) 游戏的背景故事

      3) 角色或者部队单位的描述

      4) 描述游戏的玩法

      5) 图片模型

      6) 描述游戏的级别

      7) 目标市场的机器配置(基本的系统需求)

      8) 游戏的风格、类型和视觉感受

      9) 描述游戏的特色

      10) 描述游戏的AI控制

        如果你打算让发行商更好的接受你的设计,也许要包含以下项目:

      11) 制作队伍的成员名单及其拥有的技能

      12) 开发工具的需求列表

      13) 项目工程的开发进度表

      14) 日常开支的预算案(也就是:办公场地、薪金、设备,等等)

      15) 游戏特色的解说(商业卖点)

        在你的计划书中加入你觉得有必要的、用来指导开发的细节描述。多数的游戏开发者坚持书写开发日志。如果你想制作高质量的游戏,那么这些都是很好的建议。

      概念验证

        或许在你的游戏走向实现的道路上会出现一些阻碍。感念验证是指你的游戏中最基本的模型。你通过什么来验证你的游戏可以实现,以及验证它象你所希望的那样有趣。这是对你设计的严峻考验。如果你打算将游戏卖给出版商,那么拥有一个工作模型对你会大有帮助。

        你的模式应该包括小型的一个或多个可玩的演示。这些演示要展示主要的游戏玩法原理,以及对你的设计具有鉴定性的任何专门技术的改善或效果。它可以是不完整的,但是必须在重要方面工作正常。

        很重要的,如果你的游戏面貌采用新的技术,那么你必须证明它们可以实现。尤其在你设法让出版商对你的开发投资时,这是非常重要的。你在着手长时间的开发之前,要在你的设计中明确出所有从技术角度上出发的事情。游戏项目在进行了六个月以后才发现一个重要的特色是不可能被实现的,这种情况可不乐观。

      独立制作人还是团队

        在早些时候,游戏开发可以由一个人或者两个人完成。而今天游戏开发则需要一个完整的开发队伍。为什么?基本上是因为商业开发的内容总量远远超出一个人的能力范畴。制作一个成功的商业三维游戏,在今天需要美术、建模师、关卡设计师、配乐师、游戏设计师,当然,还有程序员。让我们讨论这些情况以及什么办法适合你。

        独立制作人

        那么如何才能让自己独立完成一个好游戏呢?首先,你应该担当程序员和设计师。你不得不拥有这些技能使你可以独立开发。那么,让我们假设你已经有了这些技能。下面怎么做?

        使用现有的引擎来替代那个你需要程序员创建的引擎,从而省略那些写代码的功夫。作为一名出众的程序员,你必须有能力独自应付这类引擎。在网上有很多游戏结构的代码,你可以通过搜索器去查阅它们。例如Quake II, Shogo, Sin, Blood II中的游戏资源,都是可以下载得到的。尽管你不能直接将这些代码用到你的程序中,但是你可以将它们作为写代码时的参考。当然这些游戏或许与你想要的不是同样的类型,但所有的引擎在功能结构上是类似的。

        为了完成美术部分,你需要纹理和模型。网上可以下载到许多免费的这类资源。最坏的情况,你可以将这些工作以合约的形式包给网上那些热情的美工们。也有很多地方可以直接购买到纹理和模型。

        为了完成声音部分,你需要背景音乐和音效。有许多工具可以生成音乐,给那些没有能力制作音乐的人,这些工具就象是盒子里的乐队。有许多地方你可以买到唱片音乐和音效,将它们用在不要版税的产品中。最后的办法,你可以和热心的音乐家签约来完成这些音乐和音效。

        最后,来看看关卡设计。关卡设计是一项成熟的工艺,这意味着不是非常困难,但是你需要实践很长时间才能掌握它。现在多数游戏引擎都配有关卡编辑器,你完全可以使用它们来实践地制作关卡。让自己做的关卡变得更好是你掌握关卡设计这项本领的方法。很多网上的站点上专攻关卡设计的,可以作为你的参考。

        那么,伴随大量的工作和一些创造性的替代方法,独立制作人就能够制作出漂亮而得体的游戏。

        团队

        除了独立制作以外,有其他的途径,就是组建一个团队。队员可能是朋友或者熟人,他们在游戏制作的特定领域中拥有才干。如果你打算建立一个团队,那么最好指定一个人来专门负责决策和项目控制。如果你没有一个强有力的队长,那么你的项目会因为缺乏方向而很容易失败。

        因为有了互联网的出现,从而有了另一条途径,就是组建网络虚拟社团。就是说你的团队可能分散在世界各个角落,但是他们可以通过互联网保持联络。如果你采用这个办法,那么仔细的选择队员,因为这种工作方式常常会因为人员问题而失败。

        最后,如果你能够为队员的努力付薪水将是最乐观的情况。尽管很多初始阶段是不能得到薪金支持的,但是如果你有足够的资本,就应该吸引更多的有才能并且乐于奉献的伙伴。如果你不能立即支付,那么至少要在游戏发售后公平地分配利润。这样可以更好地筹措资金,让项目向前发展。

    • 家园 在决定开发游戏之前的15个问题

      在决定开发游戏之前的15个问题

      魔戒游戏开发组

        首先我们试图明确的是:假如能够顺利完成开发工作并上市,我们的成品要卖给谁?换句话说,我们为谁而制作游戏?因无台、港等海外市场背景资料,仅对大陆市场的玩家群体作如下简单归类分析

      首先我们试图明确的是:假如能够顺利完成开发工作并上市,我们的成品要卖给谁?换句话说,我们为谁而制作游戏?因无台、港等海外市场背景资料,仅对大陆市场的玩家群体作如下简单归类分析:

        1、从性别异同上可划分为男性玩家、女性玩家。其特点:

        男性玩家 ― 涵盖全部游戏类型,集中于SLG、RPG、FPS、RTS、SPG等方面。

        女性玩家 ― 涵盖大部分游戏类型,集中于RPG、TAB等方面。

        2、从年龄上可简单分为不同年龄段的用户。其特点:

        14岁以下 ― 童年期,以初二以下与小学生为主,家长决策购买为主。

        14―18岁 ― 青春前期,以初三至在校高中生为主,两方式并存。

        18―22岁 ― 青年后期,以在校大学生与就职青年为主,自主决策购买为主。

        22―25岁 ― 青年前期,以在职青年为主,自主决策购买为主。

        25―30岁 ― 青年中期,以在职青年为主,自主决策购买为主。

        30岁以上 ― 青年后期至终,职业形态不定,自主决策购买为主。

        3、从收入来源上可简单分为在校学生用户、工薪阶层用户。其特点:

        在校学生用户 ― 无自主收入来源,主要靠家庭供给与决策购买。

        工薪阶层用户 ― 有自主收入来源,自主决策购买。

        4、从文化程度上可简单划分为初等学历、中等学历、高等学历及以上。其特点:

        初等学历    ― 初中以下文化程度,消费认知力较低。

        中等学历    ― 初中至高中(中专)文化程度,消费认知力中等。

        高等学历及以上 ― 大专及以上文化程度,消费认知力较高。

        5、从居住环境上可简单分为都市型、城市型、县镇型。其特点:

        都市型 ― 消费焦点广度扩散,购物场所密集分布,收入幅度较高。

        城市型 ― 消费焦点中度扩散,购物场所较为密集,收入幅度中等。

        县镇型 ― 消费焦点低度扩散,购物场所较为疏离,收入幅度较低。

        6、从传媒影响上可简单划分为主动型、被动型、疏离型。其特点:

        主动型 ― 对于行业传媒具高敏感度,认知渠道宽广。

        被动型 ― 对于行业传媒敏感度较低,认知渠道较窄。

        疏离型 ― 基本不接触行业传媒,认知渠道极窄。

        7、从消费心理上可简单划分为保守型、冲动型、理智型。其特点:

        保守型 ― 消费欲望低,注重产品售后等外延。

        冲动型 ― 消费欲望高,注重产品观感与现场服务。

        理智型 ― 消费欲望中等,注重产品性价比。

        8、从硬件环境上可简单划分为原主流机种、现主流机种、高配置机种。其特点:

        原主流机种 ― P133及以下机种,部分无多媒体配置。

        现主流机种 ― P166-P266之间机种,多媒体配置。

        高配置机种 ― P300以上机种,多媒体配置。

        9、从软件环境上可简单划分为DOS用户、Windows用户。其特点:

        DOS用户   ― 硬件配置一般较低,多为文档输出平台。

        Windows用户 ― 硬件配置不等,主流软件环境。

        10、从接触程度上可简单划分为普通用户、新晋玩家、熟练玩家。其特点:

        普通用户 ― 游戏与电脑知识匮乏,尚未实际接触游戏的潜在玩家。

        新晋用户 ― 初步掌握游戏知识,对简单操控的游戏刚刚上手的现实玩家。

        熟练玩家 ― 熟悉游戏知识,能够熟练操作游戏与电脑的玩家。

        11、从购买模式上可简单分为正版玩家用户、D版玩家用户、综合玩家用户。其特点:

        正版玩家用户 ― 日常以正版消费为主体。

        盗版玩家用户 ― 日常以盗版消费为主体。

        综合玩家用户 ― 两者情况兼具并额度基本对等。

       ?b>12、从娱乐环境上可简单划分为家庭娱乐型、办公室娱乐型、网吧娱乐型。其特点:

        家庭娱乐  ― 自有主机,游戏类型不定。

        办公室娱乐 ― 公用主机,以消遣娱乐性游戏类型为主。

        网吧娱乐  ― 公用主机,以竞技对抗性游戏类型为主。

        13、从游戏形式上可简单划分为单机型、局域网型、互联网型。其特点:

        单机型  ― 主要在单机上进行游戏,涵盖各游戏类型。

        局域网型 ― 主要在局域网上进行游戏,竞技类游戏为主。

        互联网型 ― 主要在互联网上进行游戏,竞技类游戏为主。

        14、从游戏目的上可简单划分为操控型、掌握型、剧情型与娱乐型。其特点:

        操控型 ― 主要在游戏中热衷操作与控制的乐趣,如ACT、SPG、FPS等。

        掌握型 ― 主要在游戏中热衷发展与征服的乐趣,如SLG、RTS等。

        剧情型 ― 主要在游戏中热衷故事与养成的乐趣,如RPG等。

        娱乐型 ― 主要在游戏中热衷消遣与放松的乐趣,如TAB等。

        综合型 ― 以上两种或数种的综合类型。

        15.从游戏人格上可简单分为躁进型、冷静型、平衡型、多变型。其特点:

        躁进型 ― 游戏中易于冲动,喜欢探索新领域与自我表现,较注重游戏声光与操作。

        冷静型 ― 游戏行为较为保守,喜欢研究系统与剧情,较注重游戏主题与系统。

        平衡型 ― 处于躁进型与冷静型的中间状态并保持持续稳定。

        多变型 ― 不同时间.地点中游戏人格多变,难以作统一结论。

        综上所述,目标顾客群体可从多方面归类分析,其中要注意的问题如下:上述为简单类型划分,详细还可继续深入分析。如互联网玩家可分为连接速率、连接形式、单位时间、游戏量等等细则。应在目标顾客界定时建立有机关联。注意其内在的客观必然联系。类型综合与特殊区域市场的异常等等。如14岁以下玩家必然无个人收入来源。文化程度决定游戏审美观等。掌握相关数据的进化提前量。明确动态发展概念,对成品上市周期与届时环境提前作正确预测。

    • 家园 视觉收益

      视觉收益对玩家选产品的重要性

        中国的游戏研发作为一种高科技含量新兴产业,最先从厚厚内幕中披露和表现出来的一面,很多朋友都认为是国内游戏美工的创作作品。同时这也是全社会对游戏研发这样一种事业慢慢能够接受的切入点。所以在国内的很多游戏网站,我们可以看到日本动漫-电玩-游戏三位一体的主题内容。

        要承认这么多年来,中国独立的游戏研发作品,前期的整体质量是很糟糕的。策划、程序、UI、美工等等分工里面,最先走出尴尬境地的,就是美工了。这一点倒不妨回忆回忆金山系列的作品,《剑侠情缘》培养了其强壮的美工作业团队,在后来的国内单机游戏研发行业里没有哪家公司的美工能够比金山更有竞争优势。这些演变有些文艺复兴的影子,比如《赵云传》就是个追求优质画面的极致。

        回忆里形形色色的老游戏,相对而言更能让玩家抱有好感的,绝大部分都在游戏画面上有上乘表现。毕竟人是感性的,接受直观的信息是最有效的选择。往往看数据比看文章更能对判断起有益的作用,看图画比看文章和数据更是最能让人接受。

        尊重人性化是发展的方向

        如果研究过艺术的话会发现现代艺术所强调的主题就是人性化。对现代主义艺术风格的形成产生了关键性的影响包豪斯学院,以'包豪斯"风格而闻名于世。它的理念就是要彻底摧毁文艺复兴以来关于“艺术家”的神话。互动游戏是一种艺术形式,在游戏这个主题谈人性化的东西可以谈很多。越来越优秀的画面就是游戏文化进步的一个重要表征。

        网络游戏3D化带来的视觉风暴

        2004年将要在中国大陆正式运营的网络游戏,大部分都是基于3D视觉世界的。仅限的几款2D游戏,虽然都是经典的老系列产品,但是在游戏画面上也早已脱胎换骨,连带着诸多特别注重改善游戏人性化高度的修正和改良。随着广大玩家电脑硬件和网络条件的逐步提升,3D化正在游戏产品的不同层次全面渗透,并灵活的应对用户的不同需求和习惯。喜欢真实感的可以玩全3D游戏(比如A3、神迹、天堂II等等),当然硬件要好网络要稳,看3D视角就头晕头疼的可以玩2D地图3D人物造型,细腻的动作栩栩如生(这一点强烈建议大家去看盛大正在研发的《梦幻国度》,Q版的人物造型非常的可爱!)

        随着中国网络游戏自主研发实力的不断加强,又在韩国研发商带来的不得不接受的“磨练”中积累了宝贵的运营经验,日后的新玩家将不再像从前那样面临诸多门槛,要去调查好游戏的平衡性等诸多很不直观的资料,而这样的前提下,更能凸现游戏在视觉人性化、美术方面将给予产品的市场推广以鼎立支持。希望眼下充斥市场的韩国造视觉垃圾可以有朝一日被逐渐清理出中国市场。

        从游戏创作的角度来讲,美工的职务可以分为以下三种:

        原画人才

        在没动笔之前,对于一个将要设定角色原画人来说,他们对游戏世界观等大量信息是来至于游戏策划者所写的案子。在他们的原画稿上到处都写满了注释,比如这个角色多高,什么性格等个种关于游戏伦理观的说明,这些游戏理论的注释就是策划者带给他们的最初的信息。他们的工作是很有意义的,原创是艰难的。虽然只是通过最简便的纸笔却很好的表达出来了每个角色的个性化,他们是大胆的他们是很有思想的&#8226;

        2D人才

        他们的工作绝大部分是给游戏最初的素描稿设定颜色,他们的工作是充满着色彩,充满着活力。要知道表现一个故事背景,须对每一个场景每一个角色的颜色都十分有讲究的。其游戏若要表现个雪景,无疑首考虑的就是冷色调。他们是非常重视氛围的刻画。因此他们会花大量时间来考虑这张图是要表现什么要用什么颜色,他们不希望画出来的图让人不知道是在表现什么主题,所以他们会不断的去了解游戏的精髓,然后通过自己对游戏的了解用色彩在游戏里表现得淋漓尽致。他们的生活无疑是充满着色彩。

        3D人才

        说起3D,会让人想起全三维游戏,关于这一类人才,在游戏行业中主要是为游戏提供精美画面。具体来说主要是做游戏画面上的角色,怪物或是NPC等。不管是会动的怪物或是不动的游戏房子,3D的制作人员都要花很大的精力和时间来制作,让整个游戏更有真实的气氛,尽管游戏它是虚拟不真实的,但三维的动画会让游戏显的更有感染力。如今游戏行业中3D网络游戏来势汹涌,且很多玩家对3D类型的游戏大作都很期待,这类人才可以说在将来很长一段时间内都会对网络游戏的发展起到很关键的作用。

分页树展主题 · 全看首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河