This is probably the easiest solution:
1) Make your dungeon generator ensure that there is no block of wall anywhere that is smaller in size than 2x2.
2) Make sure that game entities (player, monsters) take up 2x2 blocks themselves.
3) Expand map size to 2x of what it is on both axis.
4) Leave lighting routines operating as they are now.
You tied yourself to console's "real" ASCII?
That is unfortunate because Vista and up disabled the authentic ASCII experience (fullscreen, direct to video B800:0000 memory), thus the ASCII you're doing is just graphically emulated anyway.
Hmm, maybe you can fragment the walls while still rendering them as one character, by making the displayed brightness an average of sub-blocks visible from the direction the player is looking from. Not sure if the effect would look good in motion but I think it's worth a try.
I meant fragmenting the walls in memory just for the purpose of light calculation while keeping the visual representation non-fragmented. I may have worded it poorly, I'm basically suggesting the same thing as Destroid.Hmm, maybe you can fragment the walls while still rendering them as one character, by making the displayed brightness an average of sub-blocks visible from the direction the player is looking from. Not sure if the effect would look good in motion but I think it's worth a try.
Again, I'm using an emulated console so I can't really fragment anything, apart from making a wall a minimum of 2 thick (Which I think would be equivalent of what you are suggesting).
I don't think there's an easy way out of this. Computer game graphics are full of hacks, embrace them.What I'm wondering is if I can do this without 'cheating'. Somehow elegantly calculate whether the tile is blocking the light from the reference point of the player or not.
This is where better math skills would come in handy
You can still enjoy it in its full glory on Linux.You tied yourself to console's "real" ASCII?
That is unfortunate because Vista and up disabled the authentic ASCII experience (fullscreen, direct to video B800:0000 memory), thus the ASCII you're doing is just graphically emulated anyway.
DakaSha I asked around in #rgrd on quakenet where a lot of RL devs and jday provided some suggestions from work on Brogue:
<jday> You iterate over your lights, adding their effect to cells; if the cell you're adding it to blocks light, and if the player is on the other side of it from the light (you can do the dot product or just compare which quadrant they're in), then you don't apply it.
<jday> Also, I can't tell much from that image, but make sure that (1) neither lights nor cells ever have 0 in any of r, g, or b, and (2) that values greater than 100% are supported, and only clipped when it comes time to draw them.
<jday> Also remember that you don't have to (or really even want to) follow the physical formulas for luminosity, because if you're not also taking indirect illumination and angle of incidence, and all kinds of other stuff, into account, it's not the "real" formula anyway. Always play with it.
DakaSha I asked around in #rgrd on quakenet where a lot of RL devs and jday provided some suggestions from work on Brogue:
<jday> You iterate over your lights, adding their effect to cells; if the cell you're adding it to blocks light, and if the player is on the other side of it from the light (you can do the dot product or just compare which quadrant they're in), then you don't apply it.
<jday> Also, I can't tell much from that image, but make sure that (1) neither lights nor cells ever have 0 in any of r, g, or b, and (2) that values greater than 100% are supported, and only clipped when it comes time to draw them.
<jday> Also remember that you don't have to (or really even want to) follow the physical formulas for luminosity, because if you're not also taking indirect illumination and angle of incidence, and all kinds of other stuff, into account, it's not the "real" formula anyway. Always play with it.
Ok cool. I'll read up on his solution to determining whether or not the light is being blocked by the wall.
The other advice is sound and i'll look into when i actually start tweaking my lights. I haven't even begun to try and make the lighting really look 'good'. I'm still just messing with the rendering order.
edit: i *think* i may be on to something. It seems at first glance like i might be able to do it with old fashioned triangles. I need to look into what the dot product is though. It'll take me a while to decipher that.
Also i'm not sure what he means with quadrant. If he means quadrant as in the different quadrants that BSP produces that that wont work since i wont be generating m map like that