How do I make games? A Path to Game Development(转)

When I talk to people looking to get into game development some of the first things I often hear fall along the lines of, "How do I make games?" or "I want to make a game like Quake/Everquest/Starcraft and…". The first is just way out of the realm of answerability, as there are too many aspects to possibly go into, and each of those components can be infinitely complex. 

The second, however, falls into just being unrealistic in expectations. Starcraft, Everquest and Quake were all made by teams of professionals who had budgets usually million dollar plus. More importantly though, all of these games were made by people with a lot of experience at making games. They did not just decide to make games and turned out mega-hit games, they started out small and worked their way up. This is the point that anyone who is interested in getting into game development needs to understand and repeat, repeat, repeat until it becomes such a part of your mindset that you couldn't possibly understand life without this self evident, universal truth.

Until you understand that all skills in game development are learned by experience, (meaning to start very small and working your way up) you will be absolutely doomed to never finish your projects. Even the infinitesimal number of teams that do manage to finish a non-trivial project before they have made any smaller ones have to learn incrementally, it just takes them many times longer than if they had started out with smaller projects.

Attached Image: quake3.jpg
Quake 3: Arena


So where do I start?

Tetris.

Tetris is the perfect game to begin your journey on the path to becoming an able bodied game developer. Why? Because Tetris contains the all the elements found in every game, and can be done with just about the least amount of work. Also, you don't have to be an artist to make a good looking Tetris game. Anyone who can draw a block, which is everyone with a paint program, can make a commercial quality version of Tetris.

This is another one of the big benefits of starting with Tetris. Not only can you make a fully functioning game, that is fun and addictive, but it looks basically just as good as any commercial version done of it. Blocks are blocks no matter who draws them, and tetraminos (the shapes used in Tetris) are all just a collection of four blocks.

Tetris has all the individual components that ALL games share in common. It has a game loop (the process of repeating over and over until the game is quit). The game loop reads in input, processes the input, updates the elements of the game (the falling tetraminos), and checks for victory/loss conditions.

Every single game you will ever make does all of these things, so learning the process and actually implementing it is extremely important. After you have completed this the first time, it will give you an insight into how hard it will be and how long it may take on future games. Without having done this all the way, at least once, you will never fully have a proper grasp of each of the elements. When you have larger projects, there will be more unknowns that you can't judge for in complexity and time. If you don't even fully understand the entire process because you have failed to DO it, you will likely be helpless to create schedules or estimate times properly and will most likely not succeed at the endeavor.

Attached Image: tetris_amazing_blocks.gif
A Tetris clone called Amazing Blocks

Something I need to mention is that when you make your Tetris game, you can't call it "Tetris". Tetris is a trademark of the Tetris Company who is owned by Alexey Pajitnov, the creator of Tetris. It is his exclusive right to use the name Tetris, and I believe they may have won a lawsuit saying that you cannot make a falling blocks game with the syllable "tris", as it is obviously playing off the popularity of the of the name Tetris.

However, this means nothing to you if you call your game "The Sky is Falling", or anything without a "tris" in it, as they do NOT own the gameplay, interface, or idea of falling blocks. If you hear anything differently from anyone, tell them you can't own ideas, and if you require further proof you can look up information on this subject at the USPTO (http://www.uspto.gov/ ).


What's Next?

After you have totally, completely, absolutely finished your version Tetris, you are ready for your next challenge: Breakout.

Attached Image: breakout_maniacball_s.gif
A Breakout clone called Manic Ball

Breakout is also a similar game, but it adds in much more advanced collision detection than was necessary in Tetris. You will also need to add some simple deflection physics of the ball rebounding off different portions of the paddle and the blocks.

Level layout also becomes an issue in Breakout, and in order to have more than one level you will need to come up with a way to save the maps. This deals with another component found in all larger games, which is saving and loading resources and switching levels.

After you finish your Breakout masterpiece you should move on to making Pac-Man. Pac-Man is an evolutionary step because it adds in the element of enemy artificial intelligence (AI). You may not have been aware of this, but in the original Pac-Man the four different ghosts had different goals to trying to defeat you as a team. The aggressor would try to follow the shortest path to you, making you directly avoid him. The interceptor would try to go to a junction that was closest to where you would have to move to avoid the aggressor. A second interceptor would try to stay more towards the middle and try to cut you off from using the tunnel through the sides. The last ghost would sort of wander aimlessly about which often kept him staying in a section you needed to finish the map.

This kind of detailed AI was quite advanced for games of that time, and should give you a good challenge for your first game with enemy AI.

Pac-Man also increases the complexity of maps, and adds a good deal more flexibility for using sounds, as sound was certainly a crucial elements to the success of Pac-Man. (After all, what would Pac-Man be without some sort of "wakka-wakka" sound?)

Attached Image: pac_man.gif
Pac-Man. A real classic.

The last game I suggest you should create is a side scroller, such as Super Mario Brothers, where you can jump on multiple platforms, shoot, duck and interact with enemies. As there is added art involved in this game, I would suggest looking in to using SpriteLib for some free and easy to use artwork, which is available at: http://www.flyingyog.../spritelib.html

Attached Image: smb2.gif
Super Mario Brothers 2

Side scrollers introduce the possibility of added enemy AI complexity through the use of enemy bosses which have patterns you must learn to beat, as well an added screen complexity. Now you must make a screen that is capable of scrolling in at least two directions, if not four, and deal with screen clipping, which can have a bit of a learning curve. You must also work on the physics of any jumping, bouncing of the character or shooting projectiles.

There will additionally need to be a lot more enemies than before, and you will need to keep track of their current game state (alive/dead, active/inactive), by whether they are on the screen or have already been dealt with. The level complexity and map/character storage complexity will have also increased and you will most certainly need to make a level editor at this point.

The level editor should be capable of placing tiles, scrolling through tiles, scrolling over the map, choosing tiles as brushes, cycling through the brushes, cutting and pasting, an undo, and placing enemies. If you decide to skip writing any of these, you will most likely feel sorry about it, and if you have an artist or level designer, they will probably not be very happy with you either (how would YOU feel if you had to go through someone's text files containing a bunch of numbers and commas to edit a level?). I would also suggest making back ups of previously saved maps, as it is often easier to just back things up by versions, than redrawing them.

Finally, the side scroller has a real victory condition! When you get to the end of the side scroller, you have actually GONE somewhere, so you can add on a story to progress through the game as well (and don't forget some sort of fireworks on the screen for the end of a level, so that the player has a sense of accomplishment and a REAL show of fireworks for beating the game… merely putting the words "You Have Won!" on the screen when a player has spent endless hours trying to beat your game is anti-climatic).


Get out the Polish...

Finishing a game does not merely mean you get it to a point where it is playable, and then move on, this is not a finished game. A finished game will have an opening screen, a closing screen, menu options (if applicable, at least instructions on how to play and start), introduction screens to playing, reward screens and a score board (where applicable).

If you couldn't put your game in an 80's arcade game and not be able to tell it doesn't belong just by the modes it goes through (minus the attract mode or demo mode), then your game is not finished.

There is a big difference between a game that is "bare bones", and a game you have put all the finishing touches on. This difference will be a matter of a couple of days to two weeks (depending on the size of the game). It will get increasingly (sometimes exponentially) more involved as you move from Tetris to Breakout and so on.

The result, though, will be very important, both to terms of your understanding game development, and your own pride in your work and satisfaction/fulfillment. (Accomplishment does wonders for self-esteem!)

Attached Image: galaga.gif
Galaga: Everything explained at a glance

It's not easy to show people your game and have to constantly tell them to overlook different things and feel the same as if they picked it up and had no problems moving through it and everything was well presented and complete feeling. Other game developers are a bit more forgiving, since they know the process.

Most importantly though, you will learn all the details that go into really finishing a game. If you stop at just working gameplay, you will still miss out on the details of wrapping things up, which will leave a blank spot in your mind when trying to plan larger projects in the future.


But, These Games are Stupid!

Actually, these games clearly show the basis for ALL games' gameplay. Throw a fancy 3D interface over a shooter and it's still a shooter. You could create the same game in a 2D overhead view and the gameplay would be coded exactly the same.

Is it stupid to be able to make a game with EXACTLY the same controls, responses and enemies as Quake? If you remove the 3D interface, and look at what is really happening from a directly overhead view, does it still seem as out of reach?

Even so, this is not a beginning project. There are too many elements that need to be developed and refined for a first project, so I strongly urge you to follow the order of games I suggest to gradually build up your understanding of game development. (When you learned how to swim, did you IMMEDIATELY start out with a high dive into the deep water? NO! You start in the shallow end, you learn to dog paddle, and progress from there.)

One thing that you need to clarify to yourself before starting anything, is what you want out of it. Do you want to make games, or just duplicate the technology in Quake? If all you are interested in is the technology, then skip all the games stuff and get started on graphics technology.

Attached Image: gauntlet.gif
Gauntlet

If you are really interested in making games, then you need to separate your desire to create the next cutting edge, hard core game, and focus on building your ability to do so. The best way to do that is through actually making and (more importantly) finishing games, which is what following this path (or a similar one) will give you experience in.


Be proud of your games!

You don't hear people in college embarrassed about being in college because they don't have a job yet. You are learning, and making even a simple game is hard, especially if you want it done WELL. This is shown clearly by all the people who have NOT made even simple games but talk about it constantly. Once you have finished a game, consider yourself to have more of a track record than anyone who has not finished a game even if their idea sounds phenomenal and like it's up there with the latest cutting edge games. If you can't play it, it's not a game.

When you have a finished product you can show, you need to accept that for what it is, not what it isn't or compare it to people with 5+ years of experience and million dollar budgets who work on games full time.


I made my game, now where's my Ferrari?

Sorry, one game, two games, five games probably won't cut it. Last year there were 3,500 games released on the PC, and only a few handfuls made back a large portion of cash. Most of those that did weren't made by small groups who were self-funded, they were funded by large publishers and probably had multi-million dollar budgets, and definitely near or well over million dollar advertising campaigns. This isn't a world you can't join though, it just takes a good deal of time and experience and track record of making quality games, that hopefully sell well, to give publishers confidence in your team, so that they will entrust you with this kind of financial responsibility.

Attached Image: por_fer.gif
Decisions, decisions.

However, there is more to making a living of games than the multi-million dollar budgets and I strongly suggest you take a look at the other things as well. There is nothing bad or embarrassing about making budget games, they can be just as or more fun than the high budget commercial games, and it is a lot easier to get publisher to trust you with smaller budgets. On top of that, you don't have to spend years working on the same project, and if it doesn't go over well, you don't have to feel as much loss with it.

Just have an understanding of what you really want out of making games and then concentrate on making that come true.



About the Author(s)


Geoff Howland is the owner of Lupine Games as well as being the lead programmer, business manager and handling coordination of development for all projects. He has successfully brought his company from a single person operation to ten people and negotiated two signed games within a year. In addition to developing games he has also been an active member in the game developer community writing a number of articles discussing game design and business issues, as well as being on the Advisory Board for the Independent Games Festival. You can reach him at [email="ghowland@lupinegames.com"]ghowland@lupinegames.com[/email] if you have any comments on his article.





译文

  需要从一些小的项目做起,而不是不切实际的一开始就想作类似Quake,星际等等类型的游戏。
         作一个类似Tetris(俄罗斯方块)的游戏将是一个很好的开始,Tetris包含了可以在所有游戏中都有的元素,并且可以使用最短的时间完成这个游戏作品。同时,你不需要一个美工使得你的Tetris很好看,只要你会使用任何画图工具画些方块,就能使你的Tetris变成商用的版本样式。
        Tetris包含有所有游戏的一些独立的组件。比如它有一个游戏循环。游戏循环中读入输入,处理输入,更新游戏中的元素,并且检查胜利或者失败的条件。
        在这个游戏开发过程中,你可以学习开发游戏的过程。当你完成这个游戏的时候,它会让你深入的了解游戏开发的难度。
        最后就是你发布游戏的时候不能使用Tetris作为游戏的名称,因为它是Alexey Pajitnov的注册商标。
        之后你可以挑战Breakout这个游戏。Breakout是一个类似的游戏,但是它加入了高级的撞击反弹功能。你需要加入一些简单的能反映球体撞击paddle和砖块之后反弹的物理现象的功能。
         Pac-Man是第三个游戏!Pac-Man是一个加入AI元素的跨里程的革命。在最初的Pac-Man中,四个不同的小鬼拥有不同的功能但是像一只团队一样击败游戏者。攻击类型的小鬼会选择最短的路径跟踪游戏者,第一个拦截类型的小鬼试图堵截在游戏者前进的路线上,第二个拦截者试图包抄游戏者的后退路线,最后一个小鬼会在游戏的终点处来回徘徊。
        Pac-Man在当时是很先进的游戏,并且游戏中的AI设计会给你一个很大的挑战。
        Pac-Man也有不同难度复杂的地图,同时适当的处理游戏中的声音、声效也是你的Pac-Man游戏需要考虑的。
        最后一个游戏是一个滚轴游戏,比如马丽兄弟。这个游戏中加入了美工的设计,建议你先使用一下SpriteLib处理一些美工的活。
        滚轴游戏加入了更加复杂的AI,同时页加入了屏幕显示的复杂性。你需要建立一个能两个甚至四个方向运动的屏幕,其中屏幕的剪辑会有一定的学习曲线。同时你还需要处理跳跃、反弹、射击等等功能。
         在滚轴游戏中,你需要更多的敌人来阻挠游戏者,你需要监控这些元素的状态(生存或死亡,激活或冻结)。游戏中等级和地图/角色存储都会增大,与此同时你也很有可能需要建一个级别编辑器。
        级别编辑器中需要拥有以下很多功能:布置tiles,tiles的滚动,地图的滚动,能选择不同的tiles,能剪切、粘贴、回退等功能,能放置敌人的位置。如果你想略过这些功能,那么这将是很遗憾的事情。如果你一个美工或者级别社记者,他们会很不开心如果你不提供这些功能,你不能让他们去处理一个包含很多元素的文本文件,然后要他们编写出一个级别。同时你的编辑器还可以添加一些备份的功能。
        如果你结束了这个滚轴游戏的编写,那这是一个伟大的胜利。你的确处于游戏开发中。你可以在游戏中加入故事元素,使游戏进行下去(同时不要忘记在每个级别的最后加入一些漂亮的烟火,而不是仅仅写一个“胜利”。)
        最后给游戏者一个分数并不是一个游戏编写的结束。一个完整的游戏包含开始画面、结束画面、菜单选择(包括一些简单描述如何操作游戏的说明),介绍游戏的内容,奖励画面和得分榜。
        如果您完成了这些功能,您一定会对你得作品感到自豪。之后你可以设计更大、更复杂的功能。
        在制作游戏的时候不要重复人家的劳动,不要试图去编写另一个Quake,在作游戏之前你需要考虑一下(包括作任何事情,你都需要考虑一下)。如果你对技术感兴趣,那么略过其他的模块直接进入你喜欢的技术,比如图象处理。
        如果你真的对制作游戏感兴趣,你需要将你的热情分开一些。最好的方式是重视你的能力发展。
         最后请对你能制作游戏感到自豪,同时一个真正的卖座的游戏需要大量的投入(人力、物力)。请确认你自己真正想要从游戏制作中获取的东西,然后集中精力作,那么梦想一定会成功!

原文地址:https://www.cnblogs.com/incyanggan/p/3176947.html