   Two questions for my 2D VB Game
  1)For my enemies in my game im planning to give them a line of sight, except it will be a rectange, so would it be efficient if i checked every tick if the player was in that rectange so the monster would act accordingly (It would only check monsters rendered to the screen)2) My engine, each tick, figures out what tiles to draw for board, draws them to the backbuffer then draws the NPCs and stuff.  Would it be easier if i just make a surface, draw the entire board onto it when i load the level, and have the game just blit out what the camera see to the backbuffer?  WOuld that be faster? 
  1) is there any other way to do it? maybe not. if you did it every 5 ticks, it would mimick a reaction time for the enemy.2)initially? no it would take forever. in the long run? maybe. calling all the blitting to create your world before hand would create a huge surface (depending on how large the level is), and maybe some cards cant hold surfaces that large. However, using the larger image would significantly cut down the bitblt or whatever blit function you are using calls. my suggestion is to implement both, do time tests on them, and then chose the faster one. ;  1)try to raise an event when whatever test you have = TRUE.(yes)2) hopefully you are tiling your world scene, which would make the answer no, you could profile it and see what you think but on todays hardware it shouldnt be an issue. (at least it wasnt for me) ;  For my engine, currently I just draw out whats needed for the board and i get 70 fps on a 6 year old computer.  On my new one it get like 200 fps heh.  I just wanted to figure out if that other way would be better.  ;  Caching! You only need to redraw the lowest level of tiles when the user scrolls or if the tiles need to be animated. Instead of drawing directly to the backbuffer, draw to an offscreen surface, then, if it doesn''t need to be updated, simply draw from the cache surface to the backbuffer. ;  1) the way i would do it is (if you''re using vb.net) just to multi-thread and place each monster in its own thread. that way, you''re not eating up processing time on the main loop, just each monster checks by itself. pass a reference of the pc to the monster at creation time. then when a monster ''sees'' the pc, just raise an event in the loop or have the monster act by itself.   "There is no failure without trial; for that matter, there is no success either." - someone ;  How can i multi-thread in VB6?  Ive looked through this site but it seems to favor c++ over vb on the tutorials 