vbray is an extremely simple raycasting proof-of-concept. It borrows heavily from Lodev's Raycasting tutorial, but it uses GDI lines to draw the walls on a Windows form.
We've run it on a 486 DX-2 55 Mhz, but it was very slow. There are lower-resolution options for display if needed. There's also a minimap window which shows the path of the rays used for casting!
Below is an annotation of the example starting map, Arcade.csv. The annotations give a general idea of how each line is structured. Values are separated by commas.
| Determines ground color by hex number. | |
| 1 | ground,&H3000 |
| Determines sky color by hex number. | |
| 2 | sky,&Hffff00 |
| Map width in tiles. map statements must not be longer than this number. | |
| 3 | width,20 |
| Map height in tiles. Must not have more map statements than this number. | |
| 4 | height,20 |
| Version of reader this map is intended for. | |
| 5 | version,1 |
| Starting positin in tiles (X/Y) followed by facing angle. | |
| 6 | start,11,8,-0.5596647,0.8287189,0.5469547,0.3693788 |
| Wall definitions. Each is an index used in the map statements followed by light/dark hex colors and color names. | |
| 7 | wall,1,&H808080,&H404040,gray |
| 8 | wall,2,&HFF00,&H8000,green |
| 9 | wall,3,&HFF,&H80,red |
| 10 | wall,4,&HFF00FF,&H800080,purple |
| 11 | wall,5,&H00,&H00,black |
| 12 | wall,6,&HFFFF,&H8080,yellow |
| 13 | wall,7,&HFFFF00,&H808000,cyan |
| 14 | wall,8,&H8000,&H4000,darkgreen |
| 15 | wall,9,&HFF0000,&H800000,blue |
| Map in rows/columns. Each number is a 0 for free space or a number from the wall table above. | |
| 16 | map,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
| 17 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 18 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 19 | map,8,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,0,0,0,1 |
| 20 | map,8,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,0,0,1 |
| 21 | map,8,0,0,0,0,0,0,0,0,0,0,6,5,6,0,0,0,0,0,5 |
| 22 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 23 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 24 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 25 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,1 |
| 26 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,6,0,0,1 |
| 27 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,0,0,1 |
| 28 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 29 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 30 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 31 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 32 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 33 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 34 | map,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 35 | map,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1 |
| Mobile definition: name of the mobile, followed by X/Y position, two walking animation frames (in .ico format), and a string to say on interaction. | |
| 36 | mobile,Maid,2,2,s_maid1.ico,s_maid2.ico,Fine weather- isn't it? |
| Warp definition: location to warp from on current map (X/Y), followed by name of map to warp to and location to start there (X/Y), followed by angular facing direction. | |
| 37 | warp,5,18,Cave.csv,4,2,7.912095E-02,0.996865,0.657931,-5.221983E-02 |
Mobile icons are 16 colors Windows 3.x format. In theory, they can be 32x32, but it's only been tested with 16x16.