Information about GameX
Frequently Asked Questions

Contents

1. What is GameX?
2. What are the current features of GameX?
3. What is the history of GameX?
4. Who has contributed to GameX?
5. What are the terms of use for GameX?
6. What kind of system/platform do I need to run GameX?
7. Can I use GameX to learn to make games?
8. Can I use GameX to make my shareware / open-source game?
9. Can I use GameX to make my commercial game?
10. Can I use GameX as a teaching tool?
11. What underlying graphics API does GameX use?
12. Is GameX cross-platform?
13. Can I develop my own extensions to GameX?
14. Can I contribute to the Official GameX?
15. How do contributors benefit from working on GameX?
16. This project is great! How do I donate X?
17. What is the future of GameX?

1. What is GameX?

GameX is a free, open-source game engine for game developers. GameX was original designed as a game engine that provides a single object interface for all game functions, thus eliminating the need to develop sophisticated code using different low-level APIs for sound and graphics. In addition to ease-of-use, GameX is thoroughly documented and comes with extensive demos to support new game developers. GameX is written in C++, and gives the game developer control of graphics, sound, and user input without writing any Windows, DirectX, or OpenGL code - thus freeing you to focus on the behavior and content of the game itself. GameX has also been successfully used as an interdisciplinary teaching tool for undergraduate courses in the Game Design Initiative at Cornell University.

2. What are the current features of GameX?

The current features of GameX include the following:

- GameX handles the Game and Drawing loops. GameX provides its own game and drawing loop so you don't have to write any Windows API code. Instead, GameX handles all operating system events and game timing.

- Simple 2D Rendering interface. GameX provides the easiest interface for drawing sprites. Instead of the pages of code needed to set up a 2D texture and render a sprite using a low-level API (DirectX or OpenGL), you simple initialize GameX, load a TIF, BMP or JPG file and draw the image using C++ code like this:

ImageX myimg ("ship.jpg");
GameX.DrawImage (myimg, x, y, angle, scale)

- Simple 3D Rendering interface. GameX also provides a simple interface for 3D drawing. GameX has an internal camera so you don't need to worry about initializing a 3D viewport. Just start drawing objects in 3D. Of course, you can override the internal camera if you want more control.

- Fast Hardware Rendering. GameX relies on either OpenGL or DirectX as its underlying API, so you benefit from fast hardware rendering, but without having to write lots of specialized code.

- Sound Support.
GameX uses DirectSound on the Windows platform for sound output, providing you with up to 16-channel of simultaneously mixed sound effect. However, you don't have to create the sound buffers or initialize them. Simply ask GameX to start play a sound object:

SoundX snd ("phaser.wav");
GameX.PlaySound (snd);

- Music Support. GameX support continuous music playback from WAV or MP3 files using the same simple interface.

- Simple User Input. With GameX, you can request keyboard, mouse and joystick input without dealing with Windows or X-Windows event handling. GameX managest user events and allows you to simply request information.

GameX.GetMouseX ();
GameX.IsKeyDown (KEY_LEFT);

New feature are constantly being added to GameX. The current features that are being developed include the following:
- 2D Tiled Maps for grid based simulation-style games
- Physics and Collision Detection Engines
- Simple Networking Interface for Multiplayer Support
- 3D Mesh Objects (with texturing, and file I/O)
- Kinematic Hierarchies (support for scripted 3D Characters)

3. What is the history of GameX?

As an open-source project, GameX is the product of collaborative effort.

July 10th, 2002. GameX R1. GameX first released. Software rendering 2D graphics via the ImageX class. Mouse and keyboard input through the GameX object. Support for loading and saving TIF images. (R.C. Hoetzlein)

July 16th, 2002 GameX R2. CameraX class is released with GameX to teach and demonstrate 3D perspective transformations. At this point, only 3D billboarding is permitted via sprite pasting (no 3D polygonal rendering). Additional classes released include 2D and 3D Vector and Matrix classes. (R.C. Hoetzlein)

September 15th, 2002. GameX is adopted by the Game Design Initiative at Cornell University (GDIAC) for interdiscplinary eduaction.

September 18th, 2002 GameX R3.
GameX is updated to handle initialization errors better. Error messages are displayed for nearly every type of initialization and drawing problem, including invalid display depth, improper usage of sprites and file-not-found errors when loading TIF files. GameX is first released as a stand-alone library so that games can be developed with just a single .cpp file. (R.C. Hoetzlein)

October 15th, 2002 GameX R4. GameX is released with sound support and a new SoundX class. An unlimited number of sound clips can be loaded as WAV files into SoundX objects. Up to 20 sound clips can be mixed and played simultaneously. (R.C. Hoetzlein)

February 12th, 2003 GameX R4.1. An updated version is released that fixes some bugs and provides static library for both Visual C++ and Visual Studio .NET. (R.C. Hoetzlein)

October 9th, 2003 GameX R5 beta. Contributions by Justin Pease, GameX R5 beta includes DirectX hardware rendering support, gaming timing control, music playback support and JPG file format I/O, as well as many other improvements and bug fixes.(Justin Pease)

February 1st, 2004 GameX R5. GameX R5 is officially released. Transparent polygon rendering, and depth sorting for transparent objects is supported. New drawing modes added (multiply, subtract, add, blend), as well as complex rendering features (image hue adjustment, gradients across images). Additonal bug fixes an improvement made (camera clipping)

February 4th, 2004 GameX Core Architecture redesigned. New design supports a cross-platform architecture with multiple underlying rendering APIs via GameX Device classes. First GameX development team assembled with volunteer students from the Game Design Initiative at Cornell University (GDIAC).

4. Who has contributed to GameX?

The contributors to GameX, in chronological order are:

Rama C. Hoetzlein. Original GameX core. Core Architecture redesign. OpenGL rendering.
Justin Pease. DirectX rendering, advanced image rendering, Music support, JPG support.

5. What are the terms of use for GameX?

GameX is released under the GNU General Public License (GPL), with some addition requirements for those who wish to contribute to the Official GameX source code. Please click here for the complete license details and terms of use: GameX Terms of Use

6. What kind of system/platform do I need to run GameX?


Presently, GameX R5 and R5 beta run only on Windows system with DirectX hardward support.
If you have no hardware support (older or no graphics card), you can use GameX R4.1, which supports software rendering (with limited functionality and speed).

Future versions of GameX are being designed to support OpenGL for both Windows and Linux in addition to DirectX for Windows.

7. Can I use GameX to learn to make games?

Yes. GameX was designed to be easy to use, especially for beginners. We suggest you start by downloading GameX, downloading a Demo, and taking a look at the Installation instructions in the Documentation. The GameX tutorials are the best way to get started making GameX games.

8. Can I use GameX to make my shareware / open source game?


Yes. However, under the GameX GPL license, wheather or not you sell the game you must release all of your source code and redistribute the GameX source code and libraries with your game. In addition to the copyright for your code, you must also list the names of all GameX contributors in the copyright.

9. Can I use GameX to make my commerical game?

Yes. You can even charge money for your game if you want to (the general public license does not prohibit sale of your games). However, under the GameX GPL license, wheather or not you sell the game you must release all of your source code and redistribute the GameX source code and libraries with your game. This includes the source code for your game, since it relies on the GameX open source code. In addition to the copyright for your code, you must also list the names of all GameX contributors in the copyright.

10. Can I use GameX as a teaching tool?

Yes. GameX was designed with interdiscplinary education in mind. The Game Design Initiative at Cornell University (GDIAC) uses GameX to support collaboration between college-level students in Fine Arts, Music and Computer Science. GameX is the technology that makes these collaborations possible. If you would like to use GameX as a teaching tool for undergraduate or graduate education, please contact Rama C. Hoetzlein (rch8@cornell.edu) for more information and advice.

GameX was designed for higher education, but could also be used to support special projects in public education (Middle and High School students). GDIAC is currently attempting a pilot project between undergraduate students in Computer Science at Cornell University and the Boynton Middel School in Ithaca, NY. Unfortunately, due to limited resources, we cannot provide technical support if you decide to use GameX in your classroom. In the future, if there is demand, we may offer Teaching Packets that guide a teacher through a curriculum of creative game development using GameX.

11. What underlying graphics API does GameX use?

At present, GameX R5 uses DirectX for hardware rendering. However, future versions of GameX (beyond R6) will be designed to support both DirectX and OpenGL for rendering.

12. Is GameX cross-platform?

No. At present GameX R5 runs on Windows systems only. However, the new core architecture of GameX R6 should allow for cross-platform versions of GameX in the future. The GameX R6 core architecture supports development in this direction (i.e. for Linux), but no contributors are currently working in this area.

13. Can I develop my own extensions for GameX?

Please do. GameX was designed as an open source project. Independently, you are free to work with any portion of the code you would like to. This includes developing extensions for new features or classes. If you would like to contribute to the Official GameX Source code however, there are addition requirements your code must me. See the next question.

14. Can I contribute to the Official GameX?

Under the open source license, you are free to develop any code for GameX that you would like to (provided that you include all the source code and the original copyrights with any game you distribute). However, for your extensions to be considered for inclusion in the Official GameX releases you must meet the following additional requirements:

- You must inform us as early as possible of the portion of GameX you plan to develop. If you've already created something you want to see included, this step is not required.
- You must provide us with a complete API (Application Programming Interface) for your extensions that describe how the user will interact with your code. This is a list of all public functions for your class(s). Be prepared for other contributors to suggest changes (this is why it is better to submit your API first, before you write any code).
- You must use STL (Standard Template Libraries) anywhere that basic computer science data structures are needed.
- We strongly recommend that you follow the Hungarian prefixes (industry standard) for naming variables. (m_ for member variables, p for pointers, i for integers, s for strings, etc.)
- We look for clean code. This means that functions longer than 2 pages of code should probably be broken up into supporting functions. Classes that appear to serve multiple purposes should be split up into several classes.
- In general, we discourage contributors who want to work on more than one part of the Official GameX at a time. This is to help prevent overlaps by contributors.
- If your contribution is accepted into the Offical GameX, you can expect that we will ask for interface (API) documentation as well as internal documentation (code).
- You code should be thoroughly tested. This includes providing a demo project that demonstrates all the features of your code extension.
- This is multi-step process. We will not simply accept code that is sent to us unless it meets all of the above requirements. In general, if you send us something you believe is ready for release, we may review it and send it back to you with suggestions for improvement before it is included.

* These requirements became necessary because the Official GameX releases are used in an official capacity in an education environment for first year students at Cornell University. Unlike other open source projects that would be downloaded only by geeks who specifically want to examine or use the code, the Offical GameX releases will be tested on actual, inexperienced users (i.e. first year Comp. Sci. undergrads, high school students). Therefore, the Official GameX must be stable, flexible, expandable, and have good documentation.


15. How do contributors benefit from working on GameX?

Financially, we don't. Because GameX is open source, all contributors are unpaid. However, the developers of GameX believe that GameX will become to easiest, most powerful platform for creating sophisticated games quickly. In addition, there are rewards related to providing inexperienced programmers, high school students, and undergrads with a solid, easy-to-use game development platform. Higher education, via the Game Design Initiative at Cornell University, has already benefited from GameX to support interdiscplinary education.

16. This project is great! How do I donate X?

If you like using GameX, we accept donations. If X is money, feel free to send it right away. If X is your game, we'll play it for a while and include images of it in our GameX gallery. If X is anything you wouldn't want to receive yourself, please don't send it. If X is food, please don't send it. If X is catch-free industry support, free legal advice, a Swiss bank account, or a new car, please contact us immediately. If you want to donate "X" itself, just send us an e-mail with that character in standard ascii. Donations will be distributed among the contributors.

Send donations by mail to:

Rama C. Hoetzlein
3480 County Route 8
Montour Falls, NY 14850

17. What is the future of GameX?

The new core of GameX (R6+) is being developed with industry features like scalability, flexibility and cross-platform support in mind. We believe that in the next five years, individuals and startup game companies will no longer be writing OpenGL or DirectX directly, just as no one writes graphics code in assembly language any more (graphics cards now do all the work, but with device APIs on a higher level). The reason is that these platforms are becoming too immense and complicated for small teams. It is too difficult for a small game company to develop and compete by creating high-level algorithms (character kinematics, physics, collision detection, multiplayer networked engines) starting from scratch using low-level APIs. OpenGL, DirectX, Winsock, the Windows API, and X Windows are becoming the assembly language of the gaming industry. The next generation of game APIs, like GameX, will provide all of these high-level operations - physics, kinematics, A.I, terrain generation - in one place. In the future allowing individuals and smaller game companies to develop games that are currently only possible in a large company. (R.C. Hoetzlein)

Visit the redesign page here:

GameX R6 - Core Redesign