Readme.txt
Upload User: ghyvgy
Upload Date: 2009-05-26
Package Size: 547k
Code Size: 6k
Category:

Other Games

Development Platform:

Python

  1. GLPlanet readme
  2. Keyboard commands for GLPlanet:
  3. keypad 2, 4, 6, 8 - turn camera
  4. keypad 7, 9       - roll camera
  5. keypad +, -       - adjust error threshold to increase/decrease detail
  6. w, s, a, d        - thrust forward, reverse, left, and right
  7. Ctrl              - hold down for 100x thrust
  8. spacebar          - full stop
  9. p                 - toggle polygon mode (fill/wireframe)
  10. t                 - toggle texture maps (on/off)
  11. i                 - toggle mesh & planet info (on/off)
  12. u                 - toggle mesh updates (on/off)
  13. 1-9 (non-keypad)  - jumps the camera close to the nth planet
  14. Tips for running GLPlanet:
  15. 1) For starters, GLPlanet has almost exclusively been tested on NVidia GeForce-
  16.    class cards. While it should run on other video cards, it may not run very
  17.    well. It uses NVidia's hardware vertex buffer extensions if they're supported,
  18.    which makes it run an order of magnitude faster on NVidia cards.
  19. 2) The ss.cfg file contains the star system configuration. Edit this to
  20.    add/modify planets and moons. GLPlanet.exe looks for ss.cfg in the
  21.    application's starting path, or the current working directory, when it is
  22.    launched. It will not start if it cannot find that file.
  23. 3) The default ss.cfg creates a star system similar to our inner solar system.
  24.    It contains 4 planets named Mercury, Venus, Earth, and Mars (in that
  25.    order). The Earth-like planet has a moon. The camera is initially
  26.    positioned in front of the third planet, with the moon off to the right.
  27. 4) The thrusters in GLPlanet cause simple acceleration, as they would in
  28.    space. In otherwords, the camera will not slow down on its own. To make
  29.    navigation easier, the space bar instantly stops the camera.
  30. 5) When you first start GLPlanet, you will be far enough away from the Earth-
  31.    like planet and moon that normal thrusters will take too long to get there.
  32.    Hold down the Ctrl key while flying around the planets, then release it
  33.    when flying over the surface of a planet.
  34. 6) At the default error threshold (0.0015), the Earth-like planet has a
  35.    manageable number of triangles, but the moon (due to the roughness of its
  36.    surface) jumps way up near the max of 128K triangles, causing things to
  37.    run a little slow. At any time, you may use the + or - keys (on the
  38.    keypad) to change the error threshold. Keep in mind that impostored
  39.    planets will not be updated until the camera moves enough to require
  40.    them to be updated.
  41. 7) One interesting thing to do is to fly close to a planet, stop the camera
  42.    at a viewpoint you like, then press 'u' to stop the ROAM mesh updates.
  43.    The change in FPS indicates how much time the ROAM priority checks are
  44.    taking. Then press 'p' to switch to wireframe mode and fly around the
  45.    planet. This will show you how well the triangles are optimized for the
  46.    viewpoint you picked.
  47. Tips for building GLPlanet:
  48. 1) This project was written using Microsoft Visual C++ 6.0. You should be
  49.    able to build it with older versions of MSVC++, or any other C++ compiler
  50.    than compiles Windows programs, with a few changes. Other than standard
  51.    Windows and C run-time libraries, the only libraries I link are
  52.    opengl32.lib, glu32.lib, and dinput.lib.
  53. 2) Originally I tried to minimize the amount of Windows-specific code, but
  54.    the use of certain WGL extensions made it difficult to contain. It
  55.    shouldn't be difficult to port the key pieces of this software to Linux,
  56.    but there are a number of supporting files that may be a pain to port.
  57. 3) The MSVC++ 6.0 project file has many of the key source files grouped by
  58.    type for convenience. Here is a brief description of the files and the
  59.    groups they are in.
  60. ROAM Files
  61. * ROAMTriangle.cpp and h - Encapsulates a ROAM triangle
  62. * ROAMDiamond.cpp and h - Encapsulates a ROAM diamond
  63. * ROAMSphere.cpp and h - Encapsulates a ROAM sphere, which manages the triangle and diamond lists, as well as the ROAM priority checks and mesh updates
  64. Planetary Map Files
  65. * PlanetaryMap.cpp and h - A base class for all other planetary maps
  66. * HeightMap.cpp and h - A planetary map class representing a planet's height map (calls the fractal function and crater tree to retrieve height values)
  67. * SurfaceMap.cpp and h - A planetary map class representing a planet's surface texture maps (loads the 1D textures from ss.cfg and pre-generates the global texture maps)
  68. Solar System Files
  69. * PlanetInfo.cpp and h - A utility class used for loading entries from ss.cfg
  70. * Star.cpp and h - A star object, which is currently rendered with a billboarded glow map
  71. * Planet.cpp and h - Brings together all of the ROAM and PlanetaryMap classes to encapsulate a planet or moon
  72. * StarSystem.cpp and h - Organizes the star system, handling impostor updates and rendering
  73. Supporting Files (not in a special group)
  74. * WndClass.h - Contains some of my own home-made MFC-like wrappers around part of the Win32 API.
  75. * ListClasses.h and ListTemplates.h - Contains some of my own home-made container classes. I tried using STL at one point (the MSVC++ implementation), but the performance was an order of magnitude slower, so I kept these classes around.
  76. * Noise.cpp and h - Contains Perlin noise and fBm-based functions.
  77. * Matrix.cpp and h - Contains Vector, Matrix, Quaternion, and 3DObject classes.
  78. * PixelBuffer.cpp and h - Contains a pixel buffer class for procedural generation of textures.
  79. * Texture.cpp and h - Contains a simple texture object class.
  80. * Font.cpp and h - Contains a simple font class (uses wglUseFontBitmaps).
  81. * Billboard.cpp and h - Contains a simple billboard class to handle billboard rendering.
  82. * Impostor.cpp and h - Contains an impostor class that represents the bulk of the impostoring code.
  83. * GLUtil.cpp and h - Handles the initialization of OpenGL extensions and rendering contexts.
  84. * DXUtil.cpp and h - Handled the initialization of DirectInput.
  85. * GameApp.cpp and h - Handles the startup of GLPlanet and the Windows-specific initialization.
  86. * GameEngine.cpp and h - Contains the top-level rendering and input-handling functions.
  87. * Master.cpp and h - The pre-compiled header.