Sign in to follow this  
brainydexter

What library to use for FPS ?

Recommended Posts

I am in the process of making a 3D FPS ( a stripped down version of Quake). I have been using glut till now, but I wasn't feeling quite sure if I wanted to use the same for that big a project. I have read the FAQ and poked around here are there, but I wanted some opinion on which library should I use. Also, since this partially falls in line with one of my classes, I am short on time and cant spend time exploring all those libraries. - I am using openGL as the choice of my graphics library. - I am not worried about making it cross platform (my choice of OS: Windoze). One library I didn't see much mentioned but found to have a good backing is QT. Would you recommend using qt ? Also, I'd welcome any other suggestions that you might have for me. Edit: There are two aspects that come to my mind..window management(spawning a window, keyboard/input etc) and the other is support for basic addons like printing text, using textures etc. (I think qt has a good support for both..but this is just from a brief overview of what it is with no insight whatsoever) Thanks [Edited by - brainydexter on September 14, 2009 7:49:24 PM]

Share this post


Link to post
Share on other sites
If your target OS is Windows only, why select open-source portable libraries (OpenGL, Qt)?
If I understand correctly, you are asking about which library to use for the window handling, so why do you ask if it can load textures and print text? They usually don't provide OpenGL utility function. Maybe glut do it, but glut is not a toolkit library.

As far as I know, Qt is a cross-platform library, used mostly in Linux applications and embedded platforms. It is very nice, but probably not really what you are looking for. But yes, you can use it and have an OpenGL context on it.

If your game is in C/C++, you can simply ditch glut and use the Win32 API, with a main loop and a message handling procedure intercepting key press. This is probably the fastest, and is shown in most game programming books.
If you plan to have anything more complex than a main window with the game on it (like a menu or option/splash screen), you might want to do it using something else though, cause it can get complex fast enough. In that case, I'm not sure enough to point you into a direction.

C# makes great windows too.

Share this post


Link to post
Share on other sites
My bad for skipping on details about the choice of language.

Its C++ / openGL

And yeah, am planning to put in stuff like Game state management.. more importantly..in game HUD. I have had very limited experience with win32 programming and didn't want to write whole set of API to create buttons and menus.. For these reasons, I was looking out for some toolkit which is more commonly used..

Thanks

Share this post


Link to post
Share on other sites
You don't usually write your HUD using a "traditional" windowing systems like Win32 or Qt. It's usually done using 2D primitives directly in OpenGL. There are many libraries which can help with that sort of thing (CEGUI is one example).

Usually, you just use raw Win32 to open the basic frame that contains your game, and then that's all the Win32 you do. Using something like Qt is overkill for that.

Share this post


Link to post
Share on other sites
If you want to develop for Windows then why not just use DirectX? It has everything you need for input and output management. Direct3D is an amazing 3D API (please no debates...i <3 OpenGL more but you can't deny they are both good). And if you want stuff like state machines and stuff I would just say do that yourself. It's not a difficult thing to do imho.

Share this post


Link to post
Share on other sites
True..but I have spent quite some time learning openGL and I want to make something interesting with it..

Also, I see your argument about using win32.. I'll give it a go and if it doesnt work out, I'll poke around at qt and see if its any good for complex games.

Thanks for all of your replies.

Share this post


Link to post
Share on other sites
I think you might be better off using an actual 3d engine. I know you might learn more by rolling your own, but the original post sounds like you want to make a "game", not an "engine." There have already been many posts/discussions about the difference/advantages/disadvantages between the two so I'm not going to repeat all of that here.

I myself would recommend either Ogre3d or the Irrlicht engine. They both use either Direct3d or OpenGL. They each have advantages/disadvantages I won't discuss for the same reason as above, but they have both been used for FPS games and are not very difficult to use, as compared to other solutions.

Share this post


Link to post
Share on other sites
Well..I wanted to have some reusable code (more in terms of an engine), but as I read..making a game and then refactoring out the code later on is one of the most effective ways to get an engine going. Plus, I really want to learn the gory details and get to do some crazy stuff in c++ (even tho its so painful in the beginning :O)

Thanks for your thoughts..

Share this post


Link to post
Share on other sites
Quote:
Original post by brainydexter
Well..I wanted to have some reusable code (more in terms of an engine), but as I read..making a game and then refactoring out the code later on is one of the most effective ways to get an engine going. Plus, I really want to learn the gory details and get to do some crazy stuff in c++ (even tho its so painful in the beginning :O)

Thanks for your thoughts..


That is fine too. It appears you know the way to go then. As long as you know the pain and the time it will take, then it can be done. I won't disagree with your plan considering you know what to expect :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this