Torus Games

Revision History

pending 6 Apr 2010

The problem, for which the 4.2.1 release provided a temporary fix, was that even with glBufferData(...,GL_DYNAMIC_DRAW), the call to glBufferSubData() was fast on some hardware but ridiculously slow on others. The solution was to rewrite the graphics to use fixed vertex buffer objects, and pass "attributes" to the shader to set each object's final position and texture coordinates.

4.2.1 31 Mar 2010

On some Nvidia GPUs (but not on my iMac's AMD GPU) the Torus Games ran extremely slowly, down 0.2 frames/second in Apples at Extra Hard. The problem seemed to be the glBufferSubData() call. As a temporary workaround, the sprite code now suppresses the Vertex Buffer Objects and uses client-side arrays instead. I have an idea for a more satisfactory long-term solution, but I wanted to post an immediate fix so people won't be downloading a ridiculously slow program.

4.2 30 Mar 2010

Torus Games 4.2 release.

23 Mar 2010

Added German documentation and improved German menus, thanks to Frank Lutz.

23 Mar 2010

Added "Wraparound Universe" page to explain the underlying mathematics.

19 Mar 2010

Added welcome panel that lets user select initial game. This corrects flaw for Japanese users, that Pool had been the default game, even though it's unfamiliar to most Japanese people.

26 Feb 2010

Completed German crosswords, with help from Christina Laternser.

26 Feb 2010

(iPhone) Added OpenGL ES 2.0 support.

25 Feb 2010

(iPhone) Rewrote user interface to make it easier to use (thanks to Adam Weeks Marano for suggestions).

(iPhone) Replaced crossword puzzle's scrolling keystrip with more intuitive fixed keyboard.

19 Feb 2010

Reorganized Help system.

Made game selection persistent.

5 Feb 2010

Moved graphics from client-side vertex arrays to Vertex Array Objects (VAO) and Vertex Buffer Objects (VBO), both of which are mandatory in forward-compatible OpenGL 3.0.

14 Jan 2010

Moved all colors from plain (r,g,b,α) to premultiplied (αr, αg, αb, α) for correct transparency and mipmap generation.

4.1 20 Dec 2009

Reorganized drawing code to use programmable vertex and fragment shaders (OpenGL 2.0) instead of old-style fixed function pipeline (OpenGL 1.5). New code uses generic vertex attributes for forward compatibility with OpenGL 3.2.

20 Dec 2009

Added Dutch, thanks to Jacobien Carstens.

12 Dec 2009

Reorganized graphics so that all drawing takes place in a single function, DrawTriangleStrip().

9 Dec 2009

Replaced ViewSmall implementation. The old implementation used user-defined clip planes, which ATI hardware does not support (if you write to gl_ClipVertex, the official documented behavior is a fallback to software rendering). The new implementation restricts the viewport instead. Window resizing code now enforces square multiple-of-three view dimensions, so the middle 1/9 can be drawn to without fractional pixel errors.

5 Dec 2009

Reorganized texture management.

26 Oct 2009

(Win) Simplified loading of Open GL entry points.

8 Oct 2009

Made each chess level go one recursion step deeper, but suppressed Extra Hard because it would still be too slow.

20 Sep 2009

(Mac) Migrated NSString literals with UTF-8 to newer, simpler format.

20 Sep 2009

Rewrote menu translation code for Mac OS 10.6 compatibility.

4.0 3 Aug 2009

iPhone version added.

24 Jul 2009

Added Teachers' Notes.

1 Jul 2009

Offset Tic-Tac-Toe grid by one half square to make the topological connections more obvious.

Added auto-advance feature to Crossword to remedy a common user mistake.

30 Jun 2009

Fixed minor bug in Klein bottle Jigsaw that sometimes caused a clump of pieces to drag the wrong way.

Jun 2009

New Pool interface for compatibility with iPod Touch (and it's better than the old interface on desktop computers too).

Jun 2009

New algorithms to prepare and draw jigsaw puzzle pieces avoid multitexturing and realize a 6-fold speed increase on iPod Touch.

28 May 2009

Improved user interface for Crossword.

16 May 2009

Moved responsibility for requesting a display redraw from platform-dependent code to platform-independent code.

Constructs Jigsaw's Klein double image and alpha masks from disk file rather than from OpenGL texture, for OpenGL ES compatibility.

Other minor changes for OpenGL ES compatibility.

4 May 2009

Minor maintenance on Win32 user interface.

Added undocumented keyboard commands 'f' and 's' to toggle frame rate display and sync to monitor.

12 Mar 2009

Reorganized drawing code to eliminate glBegin()/glEnd() and display lists, which are deprecated in desktop OpenGL and completely unsupported in OpenGL ES.

11 Feb 2009

Added self-hiding scroll bar to Word Search panel to accommodate word lists longer than the panel height (Mac OS X).

Simplified internal communication with panels. (Mac OS X).

10 Feb 2009

Simplified default language initialization on Mac OS X, eliminating LanguageCode.strings files.

3.0.7 8 Jan 2009

Added Russian, thanks to Alexey and Kseniya Pronin.

17 Oct 2008

Avoids calling ErrorMessage() when the OpenGL context is active.

3.0.6 16 Oct 2008

Added keyboard navigation to Crossword puzzles, using arrow keys ← → ↑ ↓ .

8 Oct 2008

Provides a clear explanation if the application gets separated from its supporting files.

4 Sep 2008

Re-organized internationalization paradigm so that

  • for each language, a single platform-independent file contains all localized strings and
  • the Windows version no longer needs separate .rc and .dll files for each language
  • (the Mac OS X version was already relieved of its language-specific NIB files at the previous revision).

3.0.5 15 Jul 2008

Re-organized internationalization paradigm on Mac OS X, to avoid multiple copies of the NIB file and to allow real-time language switching.

Added Japanese, thanks to Tatsu Takeuchi.

3.0.4 13 Oct 2007

Added Portuguese, thanks to Atractor.

Minor cosmetic changes, for example not correcting accents in Crossword until the puzzle is complete.

3.0.3 1 Sep 2007

Added Vietnamese, thanks to Nguyễn Văn Tân.

Offset Crossword grids by one half square to make the topological connections more obvious.

Wrote automatic Crossword puzzle generator to facilitate addition of new languages.

Created new crossword puzzles that

  • respect the half-square offset (aesthetic in torus, essential in Klein bottle)
  • avoid odd verb forms in French, Italian and Spanish
  • follow a consistent set of pleasantly symmetrical grids.

3.0.2 8 May 2007

(Win) Added Copy Image and Save Image… that work correctly with multisampling.

Offset Maze and Apples grids by one half square to make the topological connections more obvious.

Implemented game-specific display lists to simplify rendering of Apples.

3.0.1 5 Apr 2007

Added technical FAQs to website.

(Mac) Modified image copying code to accommodate Mac OS 10.3.9.

(Win) Revised error messages to refer to technical FAQ.

Fixed bug: When computer plans its shot in Klein bottle pool, it now handles the flip correctly.

3.0.0 6 Mar 2007

Mac OS X version added.

Extensive internal re-organization to isolate platform-independent code from UI.

Extensive internal re-organization so that the chess program can think, the pool balls can roll, etc. all under the control of the main event loop, so nothing blocks the game. Thus for example you can quit the chess program while the computer is thinking, unlike in the previous version.

Adapted for 1-button mouse, to accommodate Macs.

2.0.1 19 Jan 2007

Added Spanish, thanks to Cristóbal Camarero and Maria de la Paz Álvarez-Scherer.

2.0.0 18 Jan 2006

Initial Torus Games 2.0 release.