Below are listed the problems that were found to occur with various
browser versions. Most of the rendering bugs are no longer visible in
Canvex due to workarounds or other changes in the code.
Firefox 1.5+
- Bug
#346927: errors drawing transparent PNGs. Causes sprites to be
drawn incorrectly on Linux.
- Horrid memory leaks. Seems fixed in Firefox 2.0 (?)
Firefox 2.0+
- Bug #344830: cannot call getElementById on UI
SVG element. Causes UI initialisation to fail. Fixed in beta 2.
- Bug #346421: sometimes causes screen to go
almost entirely black, when looking in a direction where the last thing
drawn is textured (not a floor or shaded wall).
- Bug
#347458: sometimes causes screen to go partly black.
- Blurrier display than in 1.5 when canvas is rendered at 320x240
then stretched to 640x480: 1.5 duplicates pixels, 2.0 uses some
filtering.
- Faster than 1.5.
Firefox 3.0 (trunk)
- Blurrier display than in 2.0 with resized canvas
– each pixel is spread out in both directions. (Bug? or
intentional feature, to avoid the 1-pixel offset caused by only
spreading pixels in one direction?)
- Black lines between adjacently-drawn texture tiles.
- Faster than 2.0. (Except when there's a performance regression
somewhere. The code is very unstable, so problems should be expected.)
Opera 9.00
- Appears to send exactly the same keyCode in
keydown handlers for the . and delete keys.
It matches Mozilla's KeyEvent.DOM_VK_DELETE, so we just allow
DOM_VK_DELETE as strafe-right. (Key
handling seems completely non-standard across browsers, and it's
not their fault because there isn't any sufficiently useful standard.)
Internet Explorer 6, 7
Compatibility philosophy
Canvex attempts to follow the relevant standards such that it would
work in a perfectly compliant web browser. (If it fails to do so, that
should be considered a bug and preferably reported (email)). Since
browsers do not implement the standards perfectly, Canvex tries to use a
subset that works correctly in them all. Browser detection is used only
to set the default options to maximise performance, since different
browsers prefer different ways of implementing the same effect. Some
proprietary extensions (e.g. opera-2dgame) are used when
available, but never required or expected.