|
|
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 ([email protected])
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
|
|
|