Hey andi_s
my plan is to create a godgame in 3D. Something similar to populous or black and white, but smaller in scale. However I am not sure which way to go regarding framework/API. I know probably the fastest way would be to just use unity or UE4. However I'd prefer to have full control over my game and therefore would rather use a framework or API.A few years ago I would have used XNA, as it had such a great commuity and loads of examples and tutorials around. Today there is Monogame, but it seems the community is much much smaller and there are not as many tuts around. I konow most XNA stuff can be used, but I am afraid that stuff disappears over time. Also I am not sure about Monogame's state regarding 3D
The problem under the XNA hood is that it was depricated by microsoft as I know and mono develop is just put into the hole to keep XNA running on some devices. I would not advice to use XNA any more.
I want to develop on windows 10 using VS2015. Is there some framework around with a community as helpful as xna's? I am at the moment learning C++ and I am thinking about creating my own small game engine on DX11. I am thinking about getting "Introduction to Directx 11" by Frank Luna to learn DX11. What other books would you also recommend? Or would you rhater use something like Ogre3D or Urho3D?
Most people these days use commercial/free game engines for there games so the community on the raw frameworks has changed from game developers to be more engine developer specific in the days of Unity and Unreal 4. First you should read about what a game engine realy does primarily because
DirectX 11 = Rendering Framework
Rendering Framework != Game Engine
If you want to develop a real game engine you should first read Game Engine Architecture, Second Edition to understand the tasks a game engine needs to handle (Asset Management, Rendering, Input Control, Math, Scene Handling ...).
Setting up the rendering environment based on DirectX isnt the main part and not that heavy as you wouldnt get it in a shorter time span. Download the DirectX SDK or use a library that handles anything for you (Devices, Context Creation ...)
Which libraries did you also use? Or do you think it's too big a project for a single guy to learn C++, then DX11 and step by step build up an engine tailored to the game?
It dosent take too long if you use some libraries and have a year or two in spare time. I'm creating anything with OpenGL/Vulkan from scratch, using nearly no third party libraries and calling all the APIs by myself but thats my intention to learn anything and get the most possible code control what happens.
First you should collect librarries for your desired functionality, thinking "I want all" dosent help you just think about what Assets will you use (Textures, Meshes, Sound) and what file formats (TGA, PNG, JPEG, OBJ, FBX, MP3, OGG) will you pack your assets or keep them on HDD all single when shipping your game (ZIP), will you provide Gamepad support (HID) or doing anything multiplayer (Networking)?
As I told, I did anything by my own with a moderate C++ knowledge taking 3 years of my rare spare time
I am thinking about going in this direction because learning an off the shelf engine also takes time, which I could also spend in learning to create my own engine
That is often a heavy discussed chicken and egg problem in the internet but also in companies. Using a fixed third party engine has the advantage of beeing (or shoukd beeing) more perfoamt and without heavy bugs where an own software could have less performance and more bugs especialy when you are working on at as a one man show. Third party products will be developed and tested by professional programers and developers where you need to do anything by your own (changing from DX11 to DX12 for example).
The advantages of self made software is that you know how to use it and what happens in the backyard so how to fix possible bugs but it takes time to implement a new feature you first need to read about and get it working. An other advantage is portability. Think of shipping on XBox next, no problem just rework your code a little (Other platforms get more complex thats why I choosed to set on OpenGL) or your game changes, no problem too.
The in my eyes most pro point on own software is the fact that third party engines need to fit a wide area of game genres and be as much general as you could develop a space shooter with it and I a 2D fantasy RPG so the code base is more general and some featrues may be sacrificed for a better match to other game features. On example is the well known GameObject class (or similar outside of Unity) that needs you to inherit that in anything you write.
You should also not think on the engine itself but how about would you create your content and assemble your levels?
The "under the hood code" makes a small part of the game engine where the tool base keeps more than 70% of it, would you like to develop a level editor, animation viewer, texture manager, shader creator by your own then you need to develop them too or expand existing interfaces like Blender for that.
At the end its your choice whatever you prefer!