Chapter 1. Welcome to the Dungeon

Welcome to the first chapter of Visual C# Game Programming for Teens. This chapter gives you a little overview of what to expect in future chapters and helps set the pace at which we will delve into Visual C#. The goal of the book is to take you step by step through the development of a dungeon crawler–style role-playing game (RPG). First, we’ll learn the core techniques in 2D game programming in order to fill our “toolbox” with tools—the classes and functions needed for most games, such as bitmaps and sprites. Next, we’ll develop several game editors (including the most important one—the Level Editor), build the dungeon, and populate it with monsters and non-player characters (NPCs). In order to accomplish these goals, we have to start with the basics.

Here’s what we’ll cover in this chapter:

  • Game programming is an art

  • Get your feet wet first, ask questions later

  • Let your creativity fly

  • Creativity, talent, and hard work

  • The sky’s the limit

  • Learning the tricks of the trade

  • Taking a look at Dungeon Crawler

Game Programming Is an Art

Visual C# is a good tool for beginners to use for writing games because the language is fairly easy to use and Forms-based graphics programming produces good, fast results, which we need for a high-speed game loop. This book treats C# like a professional game development language. What makes Visual C# so popular in application development will be useful for our needs as well—we just won’t be using any data flow diagrams or flowcharts here! Although this is a “For Teens” book, that certainly doesn’t mean any person of any age can’t read it! The series simply reflects the reading and programming level of the average reader who is likely to read the book.

I spent quite a few years doing .NET programming with Visual C# and Visual Basic and I appreciate the .NET environment. But, I have to admit something: for every line of application code I have ever written, I was daydreaming about the source code for a game. Now, no matter what I do day by day, I love game programming, and let me tell you, it’s still fun when you grow up. I’ve been working with C++ most of the time for the last few years, using DirectX and other SDKs, so I have a good perspective on where and how Visual C# fits into things. As a game development tool, it does a pretty good job in the hands of a decent programmer. But, as is the case with even a more powerful language like C++, in the hands of a beginner, it simply will not meet its potential. What you’ll need to do over the next few chapters is learn how to get the most out of the C# language, and push it to its limits! We’re not using DirectX here, but our gameplay goals are simple enough in the graphics department—we need a 2D scrolling game world with RPG fantasy characters and dungeon artwork. The “Visual” in Visual C# allows us to also create some game editors as well—and that’s something you cant do easily in C++ (I’ve tried!). Making a 2D RPG is feasible with just about any language and platform, but we’re going to explore RPG creation with C#.

Note

If you also like the Basic language and want to learn even more role-playing game development tricks, then check out the sister book, Visual Basic Game Programming for Teens, 3rd Edition! That book builds an open world with towns, trees, and beaches, and quests. The Basic language is quite different from C# but the .NET Framework and Forms code is similar. A lot of the code between these two books is very similar, so it would be a good way to learn both languages.

However, you have to keep something in mind: This is a small book, and our goal is to create a dungeon-based role-playing game (RPG) with all the trimmings within these pages. If you feel that you are completely lost within the next few chapters, my advice is to pick up a Visual C# primer to get up to speed, and then return to this book. All of the examples are intentionally kept on the simple side, but a lot of information is presented at a fast pace, so you don’t want to get left behind. If you are totally new to C#, then I recommend you study all of the code carefully in each chapter, or pick up a beginner’s book on C# (such as Visual C# Programming for the Absolute Beginner).

Getting Your Feet Wet

For every great game idea that someone has, a thousand more ideas are waiting to be thought up by a creative person. One thing I want you to do while reading this book is learn to think outside the box. I realize that is a cliché that you have heard many times, but it is an important concept because it helps you visualize the point very clearly. Most people, and many programmers for that matter, are unable to think beyond the experience of their collected memories. A very rare person is able to think about something completely foreign, the likes of which has never been thought of before. The phrase “thinking outside the box” can mean many things, depending on the context, but when I’m talking about writing a game, I mean you should think of ideas that are above and beyond what has already been done. The greatest game ideas have not all been taken already!

For every Doom game that takes the industry by storm, there are a dozen more trend-setting game ideas waiting to be invented. Don’t be discouraged, believing that the best ideas have been discovered already! That is what many gamers believed before real-time strategy games took over the game industry a few years ago. (If you don’t believe me, just take a look at sales for StarCraft II, shown in Figure 1.1.) What’s the next great game genre? It hasn’t been invented yet. That is your job!

StarCraft II: Wings of Liberty.

Image courtesy of Blizzard Entertainment.

Figure 1.1. StarCraft II: Wings of Liberty.

Tip

Before you can let your creativity flow, you need a foundation in the basics of programming, so you aren’t always bogged down, not knowing how to make your imagination come to life on the screen. Learn as much as you can so your ideas can be put into motion without losing your momentum while looking up basic programming issues. Get up to speed quickly so you can create games, and move beyond the learner stage.

Back in 1992, I was playing Sid Meier’s Civilization on my PC, Super Mario World on my Super NES, and Dragon Crystal on my Game Gear. Contrast those with amazing new games like Goldeneye 007 for the Nintendo Wii! (See Figure 1.2.) The fact is, most people did not play games back then, unlike today, when almost everyone does! A game like Doom was unbelievable at the time, which is why people are still sharing fond memories about it today; that is why Doom III was created, and that is why David Kushner wrote the book Masters of Doom. Doom was so dramatically different from all the other games at the time that a whole new genre was created: the first-person shooter (FPS). FPS games dominate the game world today, unlike any other genre, partially because it consumed the virtual reality market that was flagging at the time.

Goldeneye 007 for Nintendo 64 and Wii (cover art).

Figure 1.2. Goldeneye 007 for Nintendo 64 and Wii (cover art).

Do you want to create a game like Doom using Visual C#? That goal is possible, but it would be a challenge. The Visual C# compiler creates intermediate language (IL) code that looks the same regardless of whether you’re using Basic or C#, and then that IL code is compiled to an object file and linked into an executable file. That compiled Visual C# game code could deliver a gaming experience like Doom. There are quite a few third-party libraries available for C#—and even more for C++. For example, most C++ games use helper libraries like Perlin (a texture generator), ZLIB (for reading Zip files), LIBOGG (for audio playback), and some of these are available for C#, but not all. So, even though we could technically build a game like Doom in C#, we would have to re-invent a lot of things on our own, or link up those C++ libraries through a complex interop library with .NET wrappers for each of the C++ functions we need. It’s just a lot of work! Why stop there? How about Quake? The first two Quake games were not extremely advanced beyond Doom. Oh, sure, they used matrix transformations and lighting and 3D models, but it would be no problem for your modern video card to handle brute force rendering without any optimization. But, again, it comes down to the language. So, we’re not going to build a Doom-style game in C#, but we are going to create an incredibly fun role-playing game!

What if we wanted to make a game like World of Warcraft? You could create a smaller, less ambitious version of WoW using C# and Managed DirectX (which is now obsolete—replaced by XNA Game Studio), but we can’t do that kind of 3D rendering with Forms-based graphics. The most challenging aspect of the game is the server, and in the case of WoW, there is not a single server, or even a bunch of servers; there are racks and racks with hundreds of servers at several geographical locations around the world. So, while it is technically feasible to play WoW with your friend from Australia (by signing on to the same region), the odds are that bandwidth would be a challenge. The limitation has to do with latency, or lag, due to the number of jumps required to send a packet of data around the world. In a game like WoW, you need a fast Internet connection with very few latency problems in order for the gaming experience to be realistic.

I’m sure you’ve experienced the rare and humorous “slideshow effect” in some games where the server becomes overburdened and cannot keep up, so players do not receive server updates for several seconds until the server can catch up. This primarily happens when a number of players are connecting with high latency, causing the connections to lag. In sufficient numbers, this causes the game to stutter or go into “slideshow mode.” (The phrase comes from the frequent exclamation by gamers to the effect of, “I’m enjoying the slideshow today!” which was more common in the heyday of modems, before broadband.) Although Blizzard makes millions of dollars in player fees every month, the company spends millions on Internet bandwidth to make the game even possible.

On Programming Languages

So, what kind of hardware do you need to play a game built using Forms-based Visual C#? Basically, we’re talking about the same kind of gaming hardware needed to play just about any game currently on store shelves, but we can get by with lower-end PCs since we will not be invoking any 3D rendering devices. Consider the typical NHRA dragster. It can make usually only a few passes down the quarter mile before the engine needs to be rebuilt. It can do it in about four seconds, but only once. On the other hand, your average family sedan or minivan will take about 20 seconds to reach the 1,320-foot mark, and a sports car will do it in about 12 seconds. But what about ease of use, multipurpose functionality, fuel mileage, and so on? You can’t exactly strap a child’s car seat to a dragster to go to a doctor’s appointment. Although you could potentially get there a lot faster, the darned car can barely turn left or right, let alone navigate in traffic. How about we use a more realistic race car as an example: a NASCAR race car. Here, we have a little more versatility, and the power potential is still stratospheric. But there are no headlights, taillights, or any modern conveniences such as air conditioning or mufflers. Do you know how loud a car sounds without mufflers? You don’t even need a racing engine to deafen yourself. At any rate, a typical NASCAR vehicle is insanely fast, but very inflexible and error-prone, unable to withstand the abuses of stop-and-go city traffic.

The same might be said of C++; it is incredibly fast and powerful, but very fragile. I write a lot of C++ code. I have about 15 years of experience with the language. And even after all that, I still get stuck for hours at a time trying to figure out a syntax error in my C++ programs. This happens all the time! It’s part of the understanding one must have with this language. But if you show it the proper respect, understand its power, and try not to get frustrated, then little by little you make progress, wrapping the lowest-level features of a game in a layer of protective classes, then another layer, and so on until you have a well-behaved program that is error free. Windows itself—yes, the operating system—was written in C++. When you work with the DirectX SDK using C++, you literally are working with the internals of the Windows OS, and can tinker with the Windows.h source code file.

Here’s one that will blow your mind: Visual C# was created with the C++ language! (Technically, we’re talking about Visual Studio.) Weird, isn’t it? I’m talking about the compiler, the editor, and so on. I’ve written about another game programming tool for beginners called DarkBASIC Professional, developed by The Game Creators (www.thegamecreators.com), and this tool (along with its DirectX game engine) was also created in C++. Even the latest version of Visual C++ was created with the previous version of Visual C++. That can kind of mess with your head if you think about it.

Building a modern first-person shooter (FPS) game requires a lot more than just rendering polygons. You have to write the code to load a BSP level, the code to load hierarchical meshes, the shader code to render meshes with lighting and special effects, the code to load and play sound effects and music, and that’s just the technical side. You also have to consider the game’s design, because a game that just looks cool is not all that great without a good story, and that’s where the designer comes in. Quake II didn’t have much of a design behind it, and actually it seems to me that id Software sort of tacked on the story after the game was nearly finished. But we’re talking about a world famous game studio here, not “<insert your name> Studios.”

Let Your Creativity Fly

The important thing to realize, though, is that thinking outside the box and coming up with something unprecedented is just the first step toward creating a great game. But, before you can be creative, you must have an understanding of the technology first! You must have the technical know-how to pull it off. In the field of video games, that means you must be a skilled programmer. If you are just getting started, then this book is perfect because Visual C# allows you to practice some of your game ideas without getting too bogged down with a difficult programming language (such as C++). These languages have a tendency to suck away all of your time and leave your mind numb and unable to think creatively. Writing solid code has a tendency to do that to a person, which is why it is a huge help when you start with a not-too-difficult language, such as C#.

Tip

You don’t need to be a C++ programmer to write a killer game! All it takes is good artwork, a good story, and well-written code. You don’t need to write fancy code with complex algorithms; you simply must follow through and complete the game. That is really what it’s all about—and that is what game industry professionals are looking for in a candidate.

On Creativity, Talent, and Hard Work

I have seen some high-quality games created with DarkBASIC. After you have finished with this book, I encourage you to consider DarkBASIC Pro Game Programming, Second Edition (Course Technology, 2006). Once you have mastered the C# language and written a few games with it, maybe then you will have some experience with which to support a study of C++. I’ve ported some games from Visual C# to C++/DirectX, and then to DarkBASIC, and then Java. In fact, the tile scroller engine developed in this book was featured in that DarkBASIC book; see Chapter 15, “2D Game Worlds: Level Editing and Tile-Based Scrolling.” And for the C++ code, see Chapter 10, “Scrolling the Background” in Beginning Game Programming, Third Edition. Another obvious choice for further study will be XNA Game Studio, which allows you to write games for Xbox 360 using the C# language we’re using here! Source code is very similar among languages when you understand the concepts behind it. The tiled layer scrolling you’ll learn about in this book formed the foundation of several games created in other languages, and now we will port it again from the Managed DirectX version from the previous edition to Windows Forms and GDI+ in this new edition. Remember, it’s all about concepts!

What you want to strive for as a budding game programmer is an understanding of these concepts, and the best way to do that is to write games using your favorite language. Believe it or not, I got started in programming with Microsoft Basic, which came with most of the old computers at the dawn of the PC industry (on such systems as Apple II, Commodore PET, and IBM PC). If you’re at all interested in learning traditional BASIC, check out QB64 at www.qb64. net—it can compile and run all of the old BASIC code dating back to the 1960s (with line numbers) as well as more modern QuickBasic and QBasic code from the 1990s. QB64 has graphics capabilities via OpenGL!

I have to say that technical programming language skills are about equal in importance to your creativity. I’ve known some very talented programmers who don’t have an ounce of creativity in their bones, so they are not able to do anything unique and interesting without someone else giving them the ideas first. It’s okay to be a person like that—really, really good at programming but not very creative—because you can always borrow ideas from other games and things like movies, and leave the ideas to a game designer or another person who needs your technical skills. It doesn’t matter if you have the technical or creative bent, because you really need to learn everything you can. Think about your favorite subjects in school, or favorite movies, and always ask yourself this question: could I make a game out of that?

The Sky’s the Limit

Did you know that you can write your own games for the Xbox 360? Microsoft provides XNA Game Studio 4.0 for free, and it uses Visual C# 2010 Express as the compiler. For an annual membership fee, you can develop a game right on your retail Xbox 360 and upload your XNA games to a special “developer’s” section on Xbox Live Arcade and sell your game using Microsoft Points (the licensing is similar to web gaming sites). Best of all, you can debug your code right on the retail Xbox 360.

You don’t need to limit your creative juices to just what you think is possible. In fact, don’t limit yourself at all, and don’t assume that you cant do anything, even if you have tried and failed. If you can imagine something, no matter how out of this world it might seem, then it’s possible to build it. That is what human imagination is all about. What Jules Verne imagined back in the late 1890s—ideas that were so crazy that everyone laughed at them—suddenly became a reality fewer than 70 years later. Imagine that—people riding around in horse carriages, on dirt or cobblestone roads, and some crazy writer suggests that people will walk on the moon. What a lunatic, right? If you lived in 1890, you probably would have thought he was crazy! It’s easy for us to make fun of people when we later know better (something called hindsight), just as it is easy to criticize a small flaw in a complex automobile or computer. (It’s easy to critique; it’s hard to create. Why do you think there are so many blogs on the net today? Uncreative people tend to criticize what they are not able to create on their own.)

Jules Verne described the rocket ship that would blast off the Earth with an explosion of mighty power that would lift the huge rocket off the ground and propel men into space so they could land on the moon. Doesn’t that sound familiar? If you have ever watched a video of the Apollo 11 mission, it is uncanny how Jules Verne described the launch 70 years before that time. Even today, boosters are launched into orbit using the same basic technology, although the rockets are a lot more powerful and more efficient than they were during the Apollo program (so much so that private companies are springing up with plans to usher in space tourism in the near future). What am I getting at here? Just this: don’t assume that a wild idea is impossible before trying. I’m sure you’ve heard the story about how many failed light bulbs Thomas Edison built before finally getting one to work. I’ve found that one of the best ways to make a great game is to base it on one of my own favorite subjects—something with which I am intimately familiar! That makes it easy to build the game because no design doc is really needed.

Learn the Tricks of the Trade

The most technically skilled programmers are often those who copy the most creatively talented people in the world. From that perspective, people are still copying the work of John Carmack (of id Software), who continues to crank out unbelievable game engines. The vast majority of game developers are trying to keep up or succumb to Carmack’s genius and end up paying to use his latest game engine. Carmack is one of the few who possesses both unmatched technical skill and incredible creative talent. Although he was born with the talent, he learned the technical skill purely from hard work, putting in an unbelievable number of hours at his keyboard, experimenting, tweaking, and trying new things, day after day, month after month, year after year... and he is still going at it.

If your whole purpose is just to have some fun while learning how to write your own game, and you have no real desire to become a master of it, that is perfectly okay! I am one of those people. I love writing games for the enjoyment of myself and others, and I don’t really care whether my latest game is any good (because I’m not trying to sell them, in most cases). If you are approaching game development from the standpoint of a hobby, the whole point is to have fun. If you want to get serious, attend a game-development college, and then get a job as a professional game developer, you’ll probably take the subject a little more seriously. There are benefits to just treating this subject as a hobby: no deadlines or pressure, and the freedom to do whatever you want. Have you always wanted to create your very own role-playing game (or another type of game), and you’ve decided to learn how to do it on your own? That’s great! In fact, that is largely the direction this book takes. If your goal is to do this for a living, then I wish you the very best; this book may be your first stepping stone on the path toward that dream.

When I suggest you think outside the box, therefore, I’m advising that you try not to succumb to the “been there, done that” mentality of creating yet another mod (using a game engine like Battlefield), or another Tetris clone, or another version of Breakout. These terrific learning experiences are very common because these latter two types of games are easy to make and demonstrate important concepts in game programming. A game engine mod, on the other hand, is an entirely different issue; most mods require little or no programming. They are merely conversions with new 3D models and game levels to match a new theme (as is the case with Desert Combat [a Battlefield 1942 mod] and Counter-Strike [a Half-Life mod]). Try to come up with some completely original game ideas and develop them; no matter how simple a game concept is, if it’s a brand-new idea, then it will probably be interesting! Of course, the fun factor is entirely up to you, the game’s designer and programmer.

Taking a Look at Dungeon Crawler

This book builds just one game to teach the subject of game programming and to give an overall picture of how the topics in each chapter are put to use in a real game. The alternatives are to forego a sample game altogether or to just use small example games or graphics demos to explain how a new subject can be put to use. Small demos and mini games provide good examples of individual subjects, but an entire game will give you a better grasp of the “big picture.” This game we’re going to build is based on a scrolling game world and animated sprites with pre-existing royalty-free artwork, courtesy of Reiner Prokein (www.reinerstileset.de). Figure 1.3 shows the game as it will look when you are finished with it in this book’s last chapter.

Dungeon Crawler is a game you create from scratch in this book.

Figure 1.3. Dungeon Crawler is a game you create from scratch in this book.

Building a Role-Playing Game

I chose to create a complete RPG for this book because no other subject digs deeper into the depths of game programming than a real RPG with all of the functionality you expect from this genre. Since I come from the old school of gaming, I am still fond of classics such as Ultima VII: The Black Gate. There’s an open source engine called Exult Ultima7 Engine (shown in Figure 1.4) that uses the original Ultima VII artwork and data files and recreates the gameplay, with complete game editors included. Download and play it from http://exult. sourceforge.net.

Exult Ultima7 Engine. (Linux version shown here.)

Figure 1.4. Exult Ultima7 Engine. (Linux version shown here.)

My second choice was a game based on Star Trek, but there are the obvious copyright problems when using a TV show as the basis for a game. If you really love some subject such as Star Trek, then I encourage you to go ahead and write a game about that subject and then give it away to your friends. The learning experience is enhanced when you are working on a game about a subject that you really enjoy and that has a lot of texture, with a huge background story surrounding it. The RPG we will build as an overall learning experience is called Dungeon Crawler and takes place in medieval Ireland, complete with ancient Celtic history and myth as background material for our game. We’ll be building this game while learning important new skills in each new chapter.

The Dungeon

The story in our Dungeon Crawler game does not include just fantasy creatures as you might find in some RPGs (vampires, skeletons, werewolves, giant snakes, giant spiders, dragons, and the like)—there will be some creatures like this to make the gameplay as fun and engaging as possible. There may also be some human characters to fight against as well as interact with as NPCs—namely, vendors in the “spawn town” where you can go to sell loot and buy new gear. Figure 1.5 shows some of the monster sprites we have available for the game, courtesy of Reiner Prokein. While fantasy characters are a lot of fun to kill in most RPGs, and Dungeon Crawler has a lot of creatures to fight, this game also features some human characters that your player will encounter.

Assortment of monster sprites available for our game.

Figure 1.5. Assortment of monster sprites available for our game.

Note

The images shown here for the Dungeon Crawler game were created by Reiner “Tiles” Prokein, who makes them freely available with no strings attached. You may browse Reiner’s sprites and tiles at www.reinerstileset.de.

Describing the Player’s Character

The most robust RPGs usually allow the player to create a custom character to play, although in recent years this has taken a backseat to hack-and-slash games like Baldurs Gate (which is okay because it introduces another type of gamer to the great fun had with an RPG and gives the type of person who would not normally play an RPG a glimpse into a bigger world). (See Figure 1.6.) Baldurs Gate most certainly does let you create a character, but it’s less robust than a traditional RPG system, because it is intended to be more of a “hack & slash” type of game.

Baldur’s Gate.

Courtesy of BioWare.

Figure 1.6. Baldur’s Gate.

Blizzard’s Diablo series may also (arguably) fall into the category of “hack & slash” game like the Baldurs Gate series. See Figure 1.7.

Diablo III.

Courtesy of Blizzard Entertainment.

Figure 1.7. Diablo III.

These provide a glimpse of the type of game that you have an opportunity to create in this book! Of course, you can tweak and modify the game to suit your own imagination, and you will have the technical know-how after reading this book to do just that. We’ll be going over the game engine for Dungeon Crawler step by step, and will develop the game in each new chapter, but the complete game with quests and goals is up to you!

I am taking this game in a slightly different direction and following a real-world scenario, as you might find in the Ultima and Legend of Zelda series. There are a lot of human characters in Dungeon Crawler (as you learn in the next few chapters), and the player can choose from several character classes. Good non-player characters (NPCs) also help the player to successfully complete the game’s primary quest chain and sub-quests. In our game, we will allow the player to create a custom character based on several character classes, as shown in Figure 1.8. Some possible classes include:

Some of the character class sprites available for our game.

Figure 1.8. Some of the character class sprites available for our game.

Warrior

Strong melee fighter with powerful weapons and plate armor

Paladin

Balanced melee fighter who wears plate armor and heals himself

Hunter

Dexterous ranged fighter who wears leather armor

Mage

Powerful magic user who wears cloth and wields a staff

Tip

You will be able to define your own character classes using the character editor in Chapter 10, “Creating Characters and Monsters.”

Adventure Game or Dungeon Crawler?

Two types of classic RPGs exist in my opinion: adventure games and dungeon crawlers. The typical dungeon crawler is made up of a spawn or home town where you can equip your character (purchase weapons, armor, and so on) using the treasure you find in the dungeon, which is usually made up of many levels and driving deep into the Earth, and is often portrayed as a gold mine that became infested with evil creatures. The standard of the genre is widely considered to be the classic game Rogue, shown in Figure 1.9. While you are killing bad guys (represented as little ASCII characters like #, %, and &), your experience is going up and you are finding gold. As your experience goes up, your skills go up as well, and this is reflected by your character’s level. A level-20 warrior, for instance, can dispatch level-5 skeleton archers with the back of his hand, so to speak, while a level-18 fire dragon poses a serious threat! This type of game is typically very simple in concept, lacking any serious storyline or plot—hence the term dungeon crawler or dungeon hack. Diablo and Dungeon Siege epitomize this type of game.

Rogue defined the RPG genre in the ancient days of computer gaming.

Figure 1.9. Rogue defined the RPG genre in the ancient days of computer gaming.

The other type of RPG, the adventure game, usually takes place on the surface rather than in a dungeon or underground mine and often involves a deeper storyline with quests to challenge the player. This game allows the player’s character to gain experience, weapons, and special items, such as armor, amulets, magic rings, and so on. Although the main quest of an adventure RPG might be very difficult, sub-quests allow the player’s character to reach a level sufficient to beat the game’s main quest. Sub-quests offer plenty of opportunity for a creative game designer to insert fascinating stories and interactions with NPCs. Ultima VII is a good example of this type of game. (This type of RPG is the focus of Visual Basic Game Programming for Teens, 3rd Edition.)

We will be building a dungeon level editor just for this game, entirely from scratch, beginning in Chapter 6, “Creating the Dungeon Editor.” Additional game editors will be featured in later chapters: a character editor in Chapter 10, and an item editor in Chapter 13.

Level Up!

This chapter introduced you to the main concepts you’ll be learning about in upcoming chapters from a high-level point of view. In later chapters, you will learn how to take the first step toward writing games with Visual C# by creating your first Visual C# project and delving into Forms-based GDI+ graphics programming. This chapter was short on details but long on ideas, presenting a glimpse of the Dungeon Crawler game, an RPG that you create while following along with this book. The remaining chapters in Part I will teach you how to use the Graphics namespace of the .NET Framework to draw bitmaps and animate sprites with an introduction to GDI+ graphics programming, and the foundational code that will be needed for the game.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.224.135