LEET VIS

Current Version: 31337
----------------------

standard disclaimer
-------------------
If this program causes your computer to have problems in any way, whether it
explodes or loses its cmos or whatever, its not my fault.  By reading this
and using leetvis you understand and acknowledge this disclaimer. 

Intro
-----
For some time I have been working on a better version of the vis utility that
was released by idsoftware.  I started out with something called supervis
that was just a few standard additions to vis much like all the extra faces
and stuff people have been adding to qbsp.  Then I made a much more feature-
rich version and called it leetvis.  Leetvis went through several revisions
and the code soon became friggin huge.  Since that was a mess and I really
needed to return to fundamentals to code my own utility, I am currently
working on a vis program called pvs.

PVS will fix a lot of problems that I saw with vis.  There will be a lot more
optimizations in PVS that hopefully will make it faster.  Also there will be
a client/server ipx paradigm that will let you speed things up via network.
However at the heart of pvs is an old kernal for the vis job itself that I am
still calling leetvis.  I may even have lighting code in pvs because the light
job can be sped up by using the pvs.

Anyway I have decided to go back and add in a few features to vis like the
original plan.  I have made a lame set of extra features and put it in the
old code from id.  A lot of the really cool stuff that is in pvs is not here
but what do you expect from 20 minutes of coding?  Besides my pvs code is now
very different from carmacks vis at this point anyway.  I hope you enjoy
the program and find it useful.

Care and Feeding
----------------
Leet Vis is a redo of the vis program for generating the potentially visible
set of quake maps.  Several modifications have been made to allow for better
performance and ease of use.

  Leet Vis relies less upon command line parameters than the old vis
program.  It will check the portal file generated by qbsp and determine how
complex it will be to vis the map.  Based upon that complexity the program
will be able to give a very very approximate time of vising.  The vis-time
equation is still very rough so expect at least 2-300% errors.  Leetvis also
tries to determine how difficult it will be to vis and tells you that too.

  If you want to use leet vis and dont have the bsp file available for use,
just run leetvis -nobsp and it will use the .prt file only.  This is useful
to me while I am designing the program and it may be useful for benchmarking
if you terminate a qbsp compile and just want to see a quick estimate of how
long it would take to vis that level.  Quick and dirty.

  I have talked to the person who developed powerbsp and he said there was a
suggestion to implement a switch to turn off sounds in vis.  Leet Vis has
that option.  It is leetvis -nosound.  This just keeps vis from adding in
the sound effects to textures it finds in the map.


  Right now I am trying to implement a way for vis to stop what its doing
right in the middle of a run.  If this works you would press the "Q" key
and leetvis would write the current run out to a tmp.vis file.  Later you
would run leetvis -resume and the run would keep going as if nothing happened.


  Soon there will be implemented four different types of optimization that
should speed up vis speed on the pc a bit.  Currently only one of the
optimizations is in place.  The others will be added as soon as I get a better
handle on a better understanding of the fundamentals of pvs generation.

  Since vis is a highly parallel operation, I have thought about putting in
ipx support for vis.  This would allow you to spawn tasks on other machines
and theoretically speed up the program.  As I see it I will have one machine
as the server and the others as clients doing a leaf at a time.


  Keep looking forward to my next project.  It will be a super version of
qbsp that does everything and I will call it "yermom".


misc stuff I am doing:
added a -noprint option to prevent screen flooding by *, and . :)

-working on stopping execution and resuming in the middle.  You simply press
 "q" and vis stops running, saves your work, and exits.  Then you run
 leetvis -resume later to keep going.

-working on a possible new optimization for vising.

-working on putting in ipx for network stuff.  Probably will be some sort
of client/server thing.  Currently have the ipx drivers written but trying
to figgure out exactly how I am going to implement it.

new options to come:
-client <nodenum>  makes this a network client machine with that id
-host <numnodes> make a server that looks for so many nodes
these options will replace -threads and spawn network threads


   Soon I plan on adding custom texture names for water brush sounds,
lava sounds, and sky sounds.  Should make for some interesting maps in
the future :)

known problems:
   Occasionally a page fault is encountered.  I have tracked that down and it
is a problem with memory.  On my 16 mb pentium I get it occasionally with
larger files.  I am redoing a lot of the file io and various arrays to remedy
that situation.  Already I have removed a lot of the static arrays that plague
qbsp but this build of leetvis will have to wait on that because I dont have
a current file on my work machine.


current options for leetvis
---------------------------
leetvis [-level 0-4] [-fast] [-v] [-nosound] [-noprint] [-prt] bspfile 

level - same old same old.  Sets vis testlevel.
fast  - fast but loose vis for testing purposes
v     - verbose mode on
nosound - will not assign sounds to textures
noprint - will not print out symbols for vis recursion
prt     - use portal file instead of bsp file


Thanks and greetz
-----------------
  Thanks to GOD or else we wouldnt be here.  Also thanks go out to iD
software because they love us almost as much as He does ;-)  Also I would
like to thank Billy Zelsnack for his putting up with me and being such a
great help in my other projects.  Special greets to Dave Taylor at crack.com,
Ryan Geithman at bossgames, and all my wonderful friends on irc.


Starving Coder Standard Beg for dollars section
-----------------------------------------------
LeetVis is FREEWARE.  Use it and  give it to your friends.  If you like the
program and it gives you a wood, please feel free to make a $5 donation to
Feed The Children, the Red Cross, or the Salvation Army.  There are those
who need it a lot more than you or I.


Complaints, Concerns, Comments, etc...
--------------------------------------
They all go to vile@dazed.nol.net or /dev/null depending on how angry you are
at me ;)


--------------------------------
.prts is .prts and pieces .prts.
