Это очень широкая вершина c и поэтому в целом не очень подходит для вопроса о переполнении стека. Я сосредоточусь на последней части вопроса («как мне узнать, когда небо должно быть определенного цвета»), потому что это хорошо сфокусированный вопрос. Остальное вам придется решить самостоятельно (направленный свет, конечно, вариант).
Годо не держит время за вас. Но вы получаете длину текущего кадра в параметре delta функции _process. Вы можете суммировать значение дельты по каждому кадру, что дает вам количество реальных секунд с момента запуска игры.
Обычно время в игре проходит быстрее, чем в реальном мире. Вам нужно выбрать коэффициент, определяющий, насколько быстрее. Если вы разделите суммарное дельта-время на этот коэффициент, вы получите количество игровых секунд с момента начала игры. Возьмите это по модулю количество игровых секунд в игровом дне, и у вас будет время дня.
Как сопоставить время суток с цветами неба, снова ваше дело.