FAQ

Contents

[FAQ]

I have a game that I want to make. What should I do?

Game development is one of the most exciting and rewarding ways to spend your time whether you are doing it to develop commercial games, prepare yourself for employment at a game studio, or just for fun as a hobbyist. The first step is to identify your talents and interests. Game development takes a lot of time, so it’s best to work in the areas that you enjoy the most. Common general areas include:

  • Programming
  • Visual art
  • Sound and music
  • General game design
  • Writing
  • Management.
  • Testing

When first starting out in game development, it is likely that you will be part of a small team – so small that you may be the only team member! Unless you have been hired as part of a studio or happened to join a solid, experienced team, your two largest concerns will be with programming and visual art.

Unfortunately, when dealing with smaller teams, as you move down the list, the tasks become less and less important. I use the word “unfortunately” because many game developers want to start working on games in areas such as game design, writing, or management. This is not an absolute ordering, but the bottom line is that without programming, it is almost impossible to make a video game. Without art, you can’t display things on the screen, so it is also difficult to make games in the absence of this content.

As a game developer, regardless of your field, you can expect to learn quite a bit through your journey. Making games can be a great way to learn and apply useful skills. Many programmers find themselves learning or relearning math, physics, AI, and data structures – courses that may have been taken in high school and college, but forgotten.

If you happen to be a programmer, or would like to become one, you are in the best shape for game development. You can create your own art, or find art online to use in your demos as you improve your skills as a game programmer. If you do not know how to program, or would like to participate on a team in one of the other fields, perhaps the best thing to do is to post samples of your work on the FlatRedBall forums in the Help Wanted Forums. There are many programmers who are looking for content developers.

Regardless of your interests, the FlatRedBall community is a great place to get information, make contacts, and show off your work.

If you are looking to fund the development of a game, please see our Services section.


[FAQ]

What is a game engine?

I’ve heard many valid answers to this question, but I prefer to think of a game engine as a set of specific tools. If you were to build a car, you’d need a lot of tools. It is possible – although not very efficient or easy – to build a car with general-purpose tools. Even doing so, you’d need to order car parts to assemble the car. But of course, the first cars were built before the first assembly lines, so you can build cars at a “low level”.

Similarly, you can develop games at a “low level” using general-purpose tools like a programming language and some libraries for displaying graphics on the screen. This can be a little tougher than using a game engine, but it can be done with a little work. For example, picking up a DirectX book and working through it and then developing a game can be challenging, but not impossible.

To return to the car analogy, as time has passed, car manufacturers have developed tools specialized for building cars. Car factories have countless machines, each doing their specific job in building the car. When we consider this factory as a whole, we could consider it as a “Car Building Engine”. With a little tweaking and modifying, the car factory can produce a variety of cars.

A game engine is a collection of tools, each of which helps create, initialize, or manage particular parts of the game. There may be a component for handling input (keyboard, mouse, joystick), a component for drawing things to the screen, and a component for managing in-game objects (movement, collision, physics, AI). These tools combined create a game engine. With some tweaking, modification, and application, the game engine can be used to create an infinite number of games (theoretically, of course).

The above explanation may skip over some details, but the general idea is there. The game engine is your set of specific tools designed for efficient game development. Or in more practical terms, a game engine is something that makes game development easier and faster.


[FAQ]

What does 2.5D mean?

2.5D level created with FRBDK's Sprite Editor
Enlarge
2.5D level created with FRBDK's Sprite Editor
The term “2.5D” has actually been used to identify two different applications of graphics technology. This term is often used to describe the original Doom and Doom 2 produced by id software. In this case, it means “3D graphics simulated by 2D technology”. Although the Doom games had a 3D appearance, they technically used 2D technology to achieve this effect.

Regarding FlatRedBall, 2.5D means the exact opposite. That is “2D graphics simulated by 3D technology”. All objects in the FlatRedBall Engine are actually drawn using 3D graphics (3D polygons, 3D camera). Using 3D graphics, the FlatRedBall engine is able to take advantage of modern graphics cards and rendering techniques to achieve performance and effects previously impossible using traditional 2D graphics like DirectDraw. However, the 3D graphics does allow for parallax scrolling and basic 3D objects.


[FAQ]

What is XNA?

Similar to DirectX, XNA is an API(Application Programming Interface) used to develop video games for Microsoft Windows and the Xbox 360. XNA is built on top of DirectX so it is similar. The newest version (as of May 2007) of the FlatRedBall Engine uses XNA.


[FAQ]

What is DirectX?

DirectX is an API (Application Programming Interface) with libraries containing code commonly used in video games. Aside from providing a common library for game programmers creating games on the PC, it also provides a way to get fast “direct” access to the hardware. One benefit of this technology is that it enables games to run much faster than if they were to access the hardware through Windows.

One version of the FlatRedBall Engine uses Managed DirectX – a newer version of DirectX designed to be used with .NET languages like C#. To program with or run any FlatRedBall programs, you will need to have the DirectX runtimes installed, which can be found here.


[FAQ]

What is .NET/C#?

The .NET Framework is a technology introduced by Microsoft which allows programmers to write programs in any .NET language (C#, Visual Basic .NET, Managed C++), and still be able to combine and run code regardless of the language being used. .NET also provides security benefits and a comprehensive library of useful code.

C# is a programming language which is most commonly associated with the .NET technology. It uses a C++-like syntax, but treats objects much like Java. It is an efficient, powerful, and clean programming language which is well-suited for video game programming.


[FAQ]

Why doesn't FlatRedBall use C++?

Most commercial games are developed using the C++ programming language. This language has essentially become a standard for game development. Many game programmers insist that it is the best language to use for performance reasons.

C#, as opposed to traditional C++, is a managed language. This means that you don’t have to worry about common memory management. This not only simplifies coding, but helps eliminate memory-related bugs, crashes, and vulnerability to hackers and malicious software.

Using .NET libraries, development time is also significantly reduced. In many independent projects, it is not performance that ends up killing projects, but rather lack of time on the developers’ parts. At FlatRedBall, we recognize that reducing development time is the best way to improve the success rate of independent game projects. Therefore, we have made every effort to make the engine as easy to use as possible. This includes choosing the C# programming language over C++.


[FAQ]

What is FlatRedBall?

The FlatRedBall name is most commonly associated with the FlatRedBall Engine; however, FlatRedBall does not only create and distribute a game engine, but also a collection of original video games. Although there are two sides to FlatRedBall, each is closely related to the other.

Each game produced by FlatRedBall is built on the FlatRedBall engine. As the FlatRedBall Engine grows and improves through use both in-house and by FRB users, the core technology which we build our games on improves as well. The use of the FlatRedBall Engine for in-house development also improves the core Engine. Every FlatRedBall game developed is done so with a list of improvements set before development begins. Therefore, with each released game, the Engine improves significantly. We believe that this practical approach of Engine development results in a library which is both easy to use and stable.

FlatRedBall also provides a community for discussion related to the FlatRedBall engine, the FlatRedBall Development Kit, FlatRedBall games, and general game development. We pride ourselves in having an active and responsive community, and believe that this is one of the most important considerations when choosing a game engine.


[FAQ]

What is the FlatRedBall Engine?

The FlatRedBall Engine is a 2.5D game engine focusing on ease of use and asset management. Development of the FlatRedBall engine began in early 2002, but the Engine was not available for public download until January 17, 2005. Since then, both the community and the engine have grown considerably.

Originally, the FlatRedBall Engine was designed for 2D games, and used the 3D technology for simple effects. However, as the engine has grown, its support for 3D has also improved. Basic 3D games can be developed using the FlatRedBall Engine, although most of its functionality is built with the assumption that the game is 2D. FlatRedBall XNA provides more advanced 3D support.

Combined with the FlatRedBall Development Kit, the FlatRedBall Engine can be used to rapidly develop any 2D game and some 3D games. The feature set continues to grow, and the developers are very responsive to user suggestions. We are confident that the FlatRedBall Engine is the easiest to use game engine available.


[FAQ]

What is the FlatRedBall Development Kit?

The FlatRedBall Development Kit (FRBDK) is a collection of programs which can be used to develop files which can be loaded in code to represent in-game objects. At the time of this writing, there are two programs in the FRBDK.

  • SpriteEditor – the SpriteEditor is a program which is used to place and edit Sprites. This program is often used to create levels, GUIs, and to assemble characters and other game objects. The SpriteEditor can also be used to assemble and view Sprites much quicker than in code.
  • AnimationEditor – the AnimationEditor is used to create AnimationChains (traditional animation created by flipping images quickly), or to animate SpriteRigs (2D skeleton objects constructed in the SpriteEditor). This program reduces the amount of code required to create animations and allows users to edit animations while viewing them in real time.

The FRBDK is extremely important and any recent in-house game would be impossible to develop without the FRBDK. We are always improving this set of software and have plans to include more applications to enable developers to do more in a shorter amount of time.

The FRBDK provides a link between artistic content and code. It is an area where both programmers and artists can work on in-game assets. It also provides a layer of abstraction and enables content to be modified without rewriting or recompiling code.


[FAQ]

Can I use the FlatRedBall Engine for commercial software?

The FlatRedBall Engine can be used for commercial projects as long as the FlatRedBall logo is displayed on a splash screen at the beginning of execution. FlatRedBall will provide the logo upon request. Commercial XNA games require license from Microsoft to run on the 360 at the time of this writing.


[FAQ]

Do I need to know how to program to make games?

To develop a game with FlatRedBall or most other game engines, you must either be a programmer or be on a team with programmers. If this is not possible, then you can still make games with some drag-n-drop programs like GameMaker and RPG Maker. However, even these programs have basic scripting languages which require some programming knowledge.

If you are looking to learn to learn to program games, click here. Otherwise, if you would like to participate on a team, then post some of your previous work and intentions in the Help Wanted Forum. There are many programmers on the FlatRedBall forums who are looking for content developers.


[FAQ]

How can I make games with computer programming?

Programming video games is a very exciting activity, but it does take some knowledge of the programming language being used. Most games are programmed using the C++ programming language, but we recommend using C# with the FlatRedBall Engine.

If you have never programmed before, or have programmed, but never with the C# programming language, you can find a series of tutorials here. There are also many other free tutorials which can be found online.

When learning how to program, it is useful to have a community to discuss problems you encounter. The FlatRedBall Forums are a great place to post questions or discuss problems you are experiencing when first learning to program with C#.

Once you are comfortable writing small programs with C#, you are ready to begin learning how to use the FlatRedBall Engine. The Tutorials and Articles area provides a collection of tutorials perfect for new users of the FlatRedBall Engine.


[FAQ]

Do I need to be an artist to make games?

If you are new to game development, what you will learn from working on a game is probably more important than completing a good-looking game. Therefore, at the early stages, using “programmer art” is perfectly acceptable. In fact, it may be a good idea to put off artist recruitment until you are familiar with the libraries you plan on using to develop your game. A considerable amount of work (in some games, the majority) goes towards asset implementation and management in games.

In other words, if an artist produces 100 frames of animation for a character and a sprite sheet for the tile map of an entire town, you may be in charge of converting the raw art to in-game objects. Telling teammates to wait while you figure out how to work with a game engine can lower morale and give the content developers an indication that you do not know what you are doing.

If you are not artistically inclined, you don’t need to worry. Simply focus on your talents, and as you build your skill and reputation, you will find that it is much easier to recruit or join a skilled team.


[FAQ]

What kind of software can I use to make game art?

The FlatRedBall engine displays textures which are loaded from image files. Supported file types include:

  • BMP
  • JPG
  • PNG
  • TGA

To create these graphics, you can use any kind of software including 3D modeling or image editing software. As most beginning game developers are on a tight budget, we recommend using The GIMP for image editing and Blender for 3D modeling and rendering. If you have access to commercial products such as Photoshop, Illustrator, 3D Studio Max, or Maya, those will work fine.


[FAQ]

What language does the FlatRedBall Engine use?

The FlatRedBall Engine is written using the C# programming language. However, since it is a .NET library, it can be used with any .NET language. Many users have written games in Visual Basic. Although any .NET language can be used, all tutorials are written in C#. If you are new to programming, or have no preference of language, we recommend using C# as most of the material is written in this language.


[FAQ]

How much math do I need to know to make games?

This question does not have one exact answer as it depends on your goals as a game developer. At a minimum, you must be comfortable with basic algebra and geometry. All objects are placed by their X, Y, and Z coordinates, so having an understanding of how objects appear using Cartesian Coordinates is necessary.

Having knowledge of Trigonometry is also very useful. All angles are measured in radians, and using Trigonometric functions is quite common. Calculus can help when attempting to predict which points curves will pass through and when creating games that use mechanical physics. Linear Algebra is also useful for collisions, physics, working with matrices, and in some cases AI.

If you haven’t studied some of these subjects, or have forgotten them, don’t worry. Game programming is a great way to learn or relearn math. Rather than simply working out problems on paper and turning them in for class credit, you will be able to apply things in games that you are working on. This immediate application makes learning easier and more interesting.

There are many math tutorials on the Internet, and if you are having problems with a specific problem, you can post your question on the FlatRedBall Forums.


[FAQ]

How much time does game development take?

Ask most game developers and they will likely answer “too much”. Game Development has traditionally been a very time consuming process. One reason is because it requires prior knowledge of programming, and for larger games, development of software systems. Also, games require a significant amount of content. Another is simply that games are very complicated pieces of software. Also, because performance is so critical for games, most libraries are relatively low-level so that the programmer can work on optimizations.

At FlatRedBall, we believe that game development should not be as time consuming as it currently is. This doesn’t mean that you can make your first game an MMORPG in your spare time. However, we have made every effort in designing our software and providing support in making development with FlatRedBall as efficient as possible.

Smaller games can easily be developed in a few weeks, even if you have never programmed a game before. Once you have learned how to work with the FlatRedBall Engine, you will find yourself creating more complex games in a fraction of the time than it would take using just DirectX/OGL or other game engines. Furthermore, FRB's continual work on the engine and FRBDK continually improve your efficiency as a game developer.


[FAQ]

How much money does game development take?

If you are reading this FAQ on a Windows machine, then you can develop FRB games without spending any money. The engine is free, and you can download free software to develop your game including Visual C# Express (for programming), GIMP (2D art), and Blender (3D art). Running on the 360 requires a Xbox 360 console with a hard drive and a subscription to the XNA Creator's Club.

If you are interested in funding a FlatRedBall project, please see our Services page.

[FAQ]

Why should I use the FlatRedBall Engine?

Rather than basing decisions on features, I prefer to evaluate game engines on the philosophy and goals of the engine developers. The bottom line is that lack of shader support won’t destroy your game project, but poor support very well can. Also, the feature list of any engine expands over time, but the level of support and the overall simplicity of the engine are rarely improved. The following is a list of things that FlatRedBall does differently – things we believe make the FlatRedBall the best non 3-D game engine.

  1. Flat Learning Curve – The FlatRedBall Engine is extremely easy to learn. To quote Tutorial 3, “the first two lines of code that you will write will produce an object on the screen, and the third line will move the object.” The game engine is programmed in such a way that it is extremely easy to learn even if you have no experience with game development.
  2. Excellent Support – On top of providing articles and tutorials, FlatRedBall offers excellent support for the FlatRedBall Engine and FlatRedBall Development Kit. The forums on www.flatredball.com are continually monitored and all questions are almost always answered within a few hours of posting – and often in less than one hour. FlatRedBall also offers support through email and live support through a variety of instant messaging programs.
  3. Continual Improvements – Since first being available to the public in January 2005, FlatRedBall has established a strong history of monthly updates. One reason for this is to show that the engine is alive and constantly being improved. Another is to make the engine more responsive to the needs of the users. Often software updates only a few times a year, and during these long periods, users often wonder if another update is actually coming, and if so, when it will arrive.
  4. Developed By Game Developers – Every feature in the FlatRedBall engine has been implemented either as a result of a user suggestion or requirement for current FlatRedBall game project. We’ve found that many engines are developed with technology in mind rather than game development. You will find that this growth by necessity has made FlatRedBall easy to use, intuitive, and practical.
  5. FRB Template – Initialization and setup can be one of the most difficult things for beginners. Furthermore, most game projects are set up the exact same. Therefore, we provide a template which comes in the form of a Visual Studio Solution file. The project requires no additional code writing – it works as is. It is also versatile enough to be used in almost all game projects. This common template also speeds the beginning of new projects for experienced FRB programmers, and provides a common structure so that your project can be easily navigated and debugged.
  6. Articles and Tutorials – There is a wealth of literature available discussing a variety of topics related to the FlatRedBall Engine and FlatRedBall Development Kit. This includes fourteen tutorials which cover most of the common features in the FlatRedBall Engine. A growing collection of articles is also available in the Articles and Tutorial forum.
  7. User-Requested Feature Implementation – FlatRedBall is very responsive to user suggestions for features and bug fixes. Not only do we often implement suggestions made by users, but these features often make their way into the next build. Therefore, it is common to make a suggestion and have it implemented in less than a month!
  8. A Solution For The Entire Team – Rather than offering libraries for programmers, the FlatRedBall Engine is developed with the entire team in mind. This is most evident in the FlatRedBall Development Kit, which is a collection of tools used to create menus, levels, characters, animations, and other in-game elements. Since these tools require no programming experience, the entire team can share tasks. These visual tools also enable artists to create and assemble richer content for the end-user.


[FAQ]

What kind of games can and can't I make with the FlatRedBall Engine?

The FlatRedBall Engine can be extended to make many kinds of games. However, at its current state, there are a few things that it cannot do.

  • “3D” Games (on FlatRedBall Managed DirectX) – The 3D in the title is in quotations because technically, the FlatRedBall Engine is a 3D game. However, when most people think of 3D games, they associate that with 3D models. The FlatRedBall Managed DirectX does not provide 3D model loading support. FlatRedBall XNA provides support for loading and animating models so it is better suited for 3D game development.
  • Console games (on FlatRedBall Managed DirectX) – FlatRedBall Managed DirectX can only be run on Windows PCs. FlatRedBall games can also not be run on Apple or Unix computers – although Apple’s dual-boot technology enables Windows to be run on Apple hardware, which increases the support for the FlatRedBall Engine. FlatRedBall XNA allows users to develop games for Windows as well as the Xbox 360.

Keep in mind that although FlatRedBall has these limitations, the feature list is continually growing, so these limitations may go away in future versions.


[FAQ]

Which platforms can FlatRedBall games run on?

FlatRedBall Managed DirectX only run on Windows PCs and dual-boot Macs. FlatRedBall XNA can run on Windows and the Xbox 360.


[FAQ]

How can I get help with the FlatRedBall Engine?

There are many ways to get support with the FlatRedBall engine:

  • Wiki – The wiki link at the top of the screen links to articles and tutorials. You can find information about all areas of FlatRedBall in the wiki.
  • FlatRedBall Forums – The FlatRedBall forums are very responsive. Over time, many common questions have been asked and answered. Try a search first as it might save you time in having to wait for a response. If nothing comes up, post your question. You will usually receive an answer within a few hours.
  • FRB on IRC – Check the chatrooms. There are usually people in these rooms who can give you ideas when you are stuck on a problem.


[FAQ]

Where should I start?

If you’re decided that you want to create games, congratulations! Game development is a very rewarding experience. To start, introduce yourself to everyone on the FlatRedBall forums. Having the support of a community can not only be informative, but also provide motivation.

If you would like to learn how to program, start by downloading Visual C# Express and work through the C# Tutorials at C# Station. If you have any questions regarding setup or programming, post them on the FlatRedBall forums.




© 2006 FlatRedBall. Website powered by bBlog, phpBB, and MediaWiki.