Roguelike UI Design

Started by
2 comments, last by BrokenKingpin 11 years, 7 months ago
I am looking to creating a roughlike game with a graphical UI, and I am looking to get some input on the design. For those unfamiliar with roguelike games, they are turn based RPGs and are traditionally text based (ascii graphics), but a lot do have graphical front-ends now (for example NetHack). As I indicated above I am looking to have a graphical interface for my game.

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!
Do you folks like coffee?
Advertisement
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.

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.
One of the main things about development of any kind is figuring out how to take the tools and libraries you have at your disposal and shape them into what you want. So, if you think you have an idea on how to use WinForms or WPF to make the game you want, you could certainly give it a try. It may very well allow you to focus on the gameplay and logic that you want to create instead of worrying about interface. There certainly has been games in the past that make use of Windows default controls for the interface. Stars! being one game that comes to mind and I seem to recall playing some sort of dungeon crawler in the 90s that made use of standard form controls.

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)

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.

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.
Do you folks like coffee?

This topic is closed to new replies.

Advertisement