what framework/API/language

Started by
2 comments, last by Shaarigan 7 years, 11 months ago

Hi,

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.

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?

Did anyone create his own DX11 engine and would mind to share how that went? 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? 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....

Would be cool to get some inputs on all this ;-).

Advertisement

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!

Thanks for your advice Shaarigan! Very much appreciated.

I think I going the route to create my own engine. I know there are lots of discussions about if you should create a game or an engine. Since I know what kind of game I want to do, I can fit my engine to only support the features I really need. I read the book you mentioned and I got quite interested in how such an engine actually works and I am motivated to learn how to do it. I refered to XNA/Monogame as it was/is a nice framework to work with. But I want to get better in C++, so I really prefer to use a C++ framework or API.

Regarding your choice of Opengl/Vulkan: I read a lot about Opengl/DX/Vulkan and I got the impression that learning DX is easier, as it has better books and more tutorials around. It seems DX11 is the one that is worth learning now, as it supports most hardware. I read DX12 is just more complicated and gives better performance, if you really know what you do. Same goes for Vulkan vs Opengl 4. I read DX11 is easier than opengl, because in Opengl it is not always clear which API functions are deprecated. I know Opengl allows for more platforms tough. Could you elaborate a bit about what made you decide to use opengl vs dx11? or was it only the multiplatform possibility?

Could you elaborate a bit about what made you decide to use opengl vs dx11?

It was simply a personal taste decision and later got to the multiplatform approach. I started my third real implementation of a game engine in C# using OpenGL interopts in the early 2008 of my first semester at university where I worked with C# and DX9 earlier.

Personaly I prefer to not using Microsoft Products whenever possible as I prefer AMD over NVidia :wink:

Technicaly maybe that DX11 performs better over GL4 but Vulkan now breaks all the limits GL was involved with and is supported by the main vendors backwards to most hardware they sold over the last years.

Same goes for Vulkan vs Opengl 4. I read DX11 is easier than opengl, because in Opengl it is not always clear which API functions are deprecated

I agree that GL is different from DX by its history but as I wrote my GL 4 core it was realy clear what functions could be used and what are depricated and were removed from the core. I work in core profile mode only so no backward compatibility support needed and it works quiet well to me.

But thats a case learning by doing expreience so if I would have decided DX the time I started prototyping I maybe could say DX is easier but we wont now any more :P

This topic is closed to new replies.

Advertisement