Git is great but I disagreed with feature branches. They interfere with continuous integration/continuous delivery. You are better off having everyone work on the main branch in my opinion. If a new feature isn't ready yet just make sure it is disabled. Only time I find branches useful is if you need to maintain old versions.
Semantic version is useful for libraries but is of little value in games. Unless you have modding capability, there is no API to break. If you have modding capability, the modding community is still not going to be happy with semantic version. They want backward compatibility. Unreal developers considered that an advantage during the development of their engine. (I suspect they have broken compatibility sometimes and it is something you may need to do but it should be as rare as possible.) Linux doesn't use semantic versioning. Instead they maintain backward compatibility.