[quote=“GlyphGryph, post:5, topic:462”]If we were starting simple, it doesn’t matter which one we do first, because the noticing things wouldn’t take into account the light levels at first. 
Most normal approach would be to have a visibility method on tiles, and then have a visibility call on objects (monsters and items) that grabbed that and modified it with their stealth rating before turning it, and visibility checks on objects compared to this value.
Then it wouldn’t matter how tiles determined their visibility or what was going on on the inside there, at least for my component.
Unfortunately, I’m pretty sure we don’t have the strongly OOP approach that something like that would require, so it may not even be possible for a tile to keep track of it’s own visibility.[/quote]
From a design perspective, if you design the noticing system then implement the tile light level, you’ll have to come back on the noticing system and redesign it for it to consider the tile light level. Doing it the other around (light level then noticing) lets you do the light level system, then implement the noticing system that uses the light level system.
It would be the foundation to the whole light system, you need to approach it with the broader idea of “what do I want in a light system” and not the narrow mindset of “what do I need to get the noticing system to work”. Doing the later might just produce a light system that only cathers to the needs of the noticing system. If we end up with this then start adding stuff that uses the lighting system, it might come short of our needs and we’ll need to redesign it and everything that uses it.
Its sorta like the problem Kevin has; the lightmap code wasn’t optimized/“properly done”, so to do this he had to redesign it around, and therefore have to redesign everything that uses it.
Always logic (light level system) before mapping (using logic, noticing system) before presentation (UI, showing the oOx stuff).