天行健 君子当自强而不息

Working with Maps and Levels(12)

Using Auto Maps

Your game world is a huge place, and when players start exploring their surroundings,
you may want to make things easier on them by providing a miniature version
of your map for their reference. Not just any map mind you—a map that is smart
enough to know where the player has been and the places he still needs to explore.

You need to display only those portions of the map that a player has explored.
Sections never visited do not need to be shown—that is, not until discovered by
players. In that way, players can look back to where they’ve been and maybe plot
out their paths to future destinations. This is the magic of auto mapping.

 

Auto Maps in Action

One of my favorite games, Phantasy Star Online, by Sega Corp., uses auto mapping
in a seamless fashion. Check out Figure 17.5, which shows the auto map at work in
the upper-right corner of the screen.

In Phantasy Star Online, the main player and other important characters in the
game are displayed on the auto map as well as small arrows. As the main player
walks around, the map scrolls to show the area around the player. As the player
visits new rooms (sections), the rooms are revealed on the auto map.

This auto-mapping feature are easy to re-create for your own game project.

 

Big Map, Small Map

The challenge here is to change your large game level into a small map suitable
for display in your game. Following snap shows a screen shot of the Mapping example
program. Notice the map in the upper-right corner of the screen. It uses alpha blending
(refer to Chapter 6 for more on this topic) to show the game action underneath.

The easiest way to make a smaller version of the in-game level is to go into your 3-D
editor and load up the level of the small map that you want to construct.

 

Loading and Displaying Auto Maps

Okay, the small auto map is created and waiting to be used. What you need to do at
this point is load the .X file and query it for the individual meshes contained
within. Using the Graphics Core’s cMesh object is perfect for loading the mesh.

Now, you construct an array of vertex buffers—one for each mesh in the auto map.
You fill each vertex buffer with the triangle face data from each mesh in the cMesh
object. The trick at this point is that although you are copying the vertex data from
the mesh to the vertex buffer, the Y-coordinate is tossed out so that the resulting
vertex buffer mesh is flat, and thus the 2-D look of the auto map.

To display the loaded map, you just position a camera, set up a viewport to render
to on the display, and render each vertex buffer. With auto mapping in place, you
can skip rendering the vertex buffers that represent sections of the map that have
not been visited by the character.

Although the concept sounds simple, get a jump on things by looking at some
working code.

posted on 2007-12-10 15:11 lovedday 阅读(219) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

导航

统计

常用链接

随笔分类(178)

3D游戏编程相关链接

搜索

最新评论