Roguelike UI Design
Members - Reputation: 228
Posted 25 September 2012 - 04:29 PM
I am looking to do the game in C# as that is what I work with everyday for my job. Now the question is what path should I take for the graphics. I know traditionally games like these might use an actual graphics or game library for the UI, such as SDL or XNA, but because of the nature of a roguelike game I am wondering if standard WinForms (or WPF) UI would be better.
Here are a few of my reasons why I am leaning towards WinForms or WPF:
1. Since the game is turned based, and the graphics and animations will be simplistic, it does not really need that high performance game loop. This has the added benefit of not needing to have a game loop that continuously run through and redisplay things, as it would only need to do anything once the player has selecting the next action/move.
2. Added flexibility in the way I can display data. WinForms or WPF already provides a large number of controls for displaying data (for example grids for displaying inventory). Also, I would be able to display data in different forms and windows. For example, you could have your main game window, and a separate window for displaying inventory or stats. This will also allow you to use multiple monitors. Basically with a graphics library I would be trying to emulate these controls, drag and drop, etc, so using this would avoid all that work.
I guess the disadvantage would be that I would not be able to support a lot of animations, and might be harder to display the tiles and sprites. Also doing it with all graphics will make it look more like a traditional game, and less like a desktop application. I am wondering if it would just be easier in the long run to go XNA and a traditional game loop.
Any input on this would be great, thanks!
Members - Reputation: 449
Posted 26 September 2012 - 12:42 PM
At the end of the day, what are you looking for from the project? if you want to get something done quickly with less work, you should take the WinForms route. If you want to start learning more involved graphics techniques, I would go with XNA.
Crossbones+ - Reputation: 2205
Posted 26 September 2012 - 12:52 PM
However if the point of using Winforms or WPF is to make your life easier, you should keep in mind that if you're finding that you're having a tough time making the controls behave in the special way that you want, then it may be time to consider XNA or some other library. Don't spend too much time trying to force a square peg into a round hole.
I happen to have a Go-Fish card game on my website called TuFish that used dialog boxes for the UI. If I recall, for the graphics I got the location of a static rectangle control and then blt a bitmap to that location using some GDI calls. The code is available from the website but if you are to look at it, I hope that you quickly recognize that it isn't anything that you'd want to model your own project off of. (that is to say it was a very early project of mine and probably doesn't follow a lot of modern conventions that you should be following)
Edited by kseh, 26 September 2012 - 12:58 PM.
Members - Reputation: 228
Posted 26 September 2012 - 01:49 PM
I actually started looking at MonoGame just after posting this. I even got a few MonoGames examples compiling and running under Linux. It looks pretty straight forward to create a tile engine and getting sprites moving around. It does look like there are third party libs for UI controls in XNA, but I will have to look into how cross platform they are (or embedding the XNA view in a GTK# application). Either way, I think this might be the direction I will take.
As with anything else, it depends on your final goal. If you do Winforms/WPF, you're locked into Windows unless you write a bunch of extra code to port the UI to another platform. If you do pure XNA, porting is much easier thanks to MonoGame. If you want the power of XNA with the existing Windows UI (which is not a bad option), you can embed an XNA view into Winforms.