I'm trying to build a simple 2D Shoot 'Em Up type of game in C++ using SDL2 and an Entity Component System, which I've already implemented. The idea is to have different maps/rooms where you have to kill all enemies before moving on to the next. Each room has different types of obstacles and those obstacles are positioned differently in each room.
I already have the design of the first map with all the obstacles in it. However, I suspect I should really separate the actual "map", i.e., wherever you can walk on, from the obstacles' assets in order to keep them as separate entities with their own (static) Hitbox components. This would still require me to place each and every obstacle on the map "by hand", i.e., tweaking their coordinates on the map until it looks like my current design.
My question is simply: is there a more efficient way to do this? How is this usually dealt with in the (indie) gamedev community?
If possible, I would also like to know if keeping each tree, box, wall... as separate entities with different IDs is actually a good idea. And if so, would that also be the way to implement invisible walls as map limits?
Thanks in advance for your time!