I am working on a hobby project a "2d, rpg, top down, tile based, real time, hack and slash".

I came to a point where i am supposed to add day and night cycle, but i am oblivious how to achieve that, adding light engine would allow to make torches/fire at night to glow which would be good so any suggestions?

I can see two options:1. Keep things symbolic. Make a day and a night version of each sprite, and do a quick transition from one to the other when the sun goes up or down (you can even have some sound queues, like the ululating of an owl for sunset and the crowing of a rooster for sunrise, plus different background music for day and night). This is an especially good idea if you have some clear rules about what happens at night or during the day (Dangerous creatures wander the woods at night? Shops are only open during the day? I really don't know what your game is about...).2. Go 3D. You can keep your game mechanics 2D, but if you want to render lighting effects (you mentioned torches), I can't see how you could do that without knowing the geometry of the scene and the characters in some detail.

I strongly suggest going with option 1, particularly for a hobby project.

I can see two options:
1. Keep things symbolic. Make a day and a night version of each sprite, and do a quick transition from one to the other when the sun goes up or down (you can even have some sound queues, like the ululating of an owl for sunset and the crowing of a rooster for sunrise, plus different background music for day and night). This is an especially good idea if you have some clear rules about what happens at night or during the day (Dangerous creatures wander the woods at night? Shops are only open during the day? I really don't know what your game is about...).
2. Go 3D. You can keep your game mechanics 2D, but if you want to render lighting effects (you mentioned torches), I can't see how you could do that without knowing the geometry of the scene and the characters in some detail.

I strongly suggest going with option 1, particularly for a hobby project.

For a basic day/night effect, you can use the glColor color of your vertices, and instead of having them pure white (255,255,255), use a color that changes as the time of day changes, perhaps by having a texture that you use to lookup the colors by index. You do this for all your regularly draw images, when you draw them, except for things you don't want affected by sunset/sunrise/nighttime colorations (things like text, and GUI stuff).

Index into the image depending on the time of day. I just slapped this gradient together, but you'll need to finetune it to fit the appearance you want for your game, by trying it out in your code.

For lights such as torches, you can use a texture blended with additive alpha blending.

For cast shadows, you can use a texture blended with regular alpha blending.

Ideally that would probably be rough normal vectors stored in a texture ... and the lighting engine would use it.

Guess something like that is needed if you want different light sources to have the desired effect, but not sure what a tool to create those maps with would look like.

You might be able to use only one grayscale image with the one value indicating how much the local color is influenced by the ambient light. The ambient light could change over time. The local color would stay the same. Black would mean it is always shown as a shadow.

Faking a local light source by modifying the color of the ambient light and using the resulting color (and maybe intensity) to modify the rendered object color might give reasonable results. Not sure ... guess a lightsource behind an object would be problematic.

Using white and black for darker and brighter is not optimal.

Maybe you can look at art tutorials and come up with a smart innovative way to accomplish what you want: