NOTES.TXT
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:4k
源码类别:

游戏

开发平台:

Visual C++

  1. New: The source now includes a makefile and a project file for Watcom C/C++.
  2. Compiles should be possible now.
  3. The following are notes to the reviewing programmer.
  4. This program is spread out into several modules, many of which are
  5. themselves several files large. In general, for source code names
  6. which are not self-explanatory:
  7. a file prefix means it has to do with world file i/o
  8. a ray prefix either has to do with rendering or is from an
  9. older time when all files were ray prefixed
  10. a scr prefix means it has to do with screen management
  11. an spr prefix means it has to do with sprites/objects
  12. a vox prefix means it has to do with mountain rendering
  13. Many of the sources are commented, but a few are not. In general, its not
  14. at all cryptic code. I've tried to adhere to the general philosophies of
  15. structured programming.
  16. Important files:
  17. gamerun.cpp - overall managing file. Runs almost everything
  18. dosrun.cpp - actual location of main() in DOS version. Just turns control
  19. over to gamerun.cpp
  20. rayinit.cpp - starts up and shuts down most system independent stuff
  21. raycast.cpp + bsptree.cpp - make up the meat of the overall renderer
  22. sprrend.cpp - the sprite renderer
  23. voxrend.cpp - c portion of mountain renderer
  24. filemain.cpp - overall managing file for world file i/o
  25. player.cpp - file that controls the player
  26. ray.h - info given to almost all files
  27. globals.h - global variables (I used to use globals, and now don't,
  28. but I still have relics)
  29. rayrend.h - h file for renderer
  30. rayfile.h - h file for world file i/o
  31. voxel.h - h file for mountain internal files
  32. voxinter.h - h for for mountain external files that want to use mountains
  33. sprutils.h + rayspr.h + rayspr.h - h files for sprites 
  34. Command-line options:
  35. -noshade turns off mountain shading
  36. -fastvox makes mountains render faster but not as nicely 
  37. (does not effect shading)
  38. I haven't tried these in a long time, so I don't know if they work:
  39. -file uses alternate world file (will actually load DOOM wads too)
  40. -ftex use alternate world for floor textures
  41. -wtex same but for walls
  42. A few idiosyncracies:
  43. mix of the terms sprite and object- Technically, a sprite refers to a 
  44. specific type of object, on that rendered as a moving bitmap. However,
  45. in the program the terms are interchanged without concern for specific
  46. definition. When sprite is used, it sometimes refers specifically to the
  47. rendering of an object
  48. #ifdef OS_ lines
  49. These refer to operating system dependent portions of the code.
  50. A windows port was actually written for the project, but unfortunately other
  51. aspects of the project to priority before I could debug the WINDOWS version.
  52. However, it actually compiled to windows at the time and ran, albeit in a
  53. slightly screwed up fashion(sp?) (the color palette was messed up). At this
  54. point, it probably will not compile cleanly to Windows, though finishing the
  55. port would require only a day or two for an experienced Windows programmer.
  56. (When I wrote the port, it was the first Win program I'd ever written).
  57. code for objects & function pointers associated with them- The object model
  58. in the program is pretty neat. Rather than defining the object types at 
  59. compile time, object types are run-time defined in the world file. 
  60. Orchestrating this is not easy, and sometimes it makes object code overly 
  61. complex. However, it is interesting to note that you could now, for example,
  62. put the camera in eye of an enemy, or change one enemies pictures to change
  63. him form a human to a monster. You should also note that some of the later
  64. object code was written very close to the time a prototype was needed, as is
  65. as a result somewhat cryptic and inflexible.
  66. the asm files
  67. sliver.asm- code for inner loop of rendering walls & floors
  68. voxrow.asm- one set of code for inner loop of mountains (partially shaded)
  69. voxrowf.asm- secode set of mountain code (no shading)
  70. vrsmooth.asm- final set of mountain code (full shading). This the one that is
  71. almost universally used
  72. Sorry if I missed a bunch of stuff. I tried to put what I'd want to know
  73. if I had to look at my code.