# What do I need to know about game design before I design and develop a game in Silverlight?

I have started to design a game. I have weighed up the options of XNA, Unity, and Silverlight. I am going with Silverlight... Is there anything I important that I am missing that I need to know?

EDIT

I sketched the structural design yesterday: http://carnotaurus.tumblr.com/post/4921541502/old-school-game-to-be-written-in-silverlight

Not to repeat the game specifications at great length, a description of the 2D old school game can be found here: What approach would you take to develop an old school game?

• Should your title begin with the word 'what' rather than 'why'? – Kylotan Apr 24 '11 at 20:06
• Good point - I'll edit – CarneyCode Apr 24 '11 at 20:07
• Actually, why isn't a bad thing to ask either :) Don't fall into the trap of thinking you need to learn a lot before you do something - you'll learn a lot doing along the way. A lot of people don't do anything, just think about it. Be a doer. Doer's get more games completed! – Tim Holt Apr 24 '11 at 22:07
• This is now a pretty confusing question. The title asks one question, the body asks another one... – Tim Holt Apr 24 '11 at 23:58
• -1, "a game" is too broad. There are lots of aspects to all of those engines/frameworks you have listed, and you have given us no detail to go on. You don't have any goals, you haven't listed any requirements, and I'm not sure what exactly you're looking for. From the faq: you should ask practical, answerable questions based on actual problems that you face. – Tetrad Apr 25 '11 at 6:14

I would say you need to know:

• Basics of object-oriented programming
• C# (or VB.NET)
• What you plan to build (graphics engine? physics engine)
• What you don't plan to build (eg. what you will look to use existing code for -- like a 2D game engine)
• The game idea
• The core gameplay mechanic

An example of core gameplay mechanic is: in Tetris, you spend 99% of your time rotating and placing blocks on top of other blocks, trying to make lines. That's your core gameplay.

Most of this you won't know in detail; the rest, you can figure out along the way.

• Excellent, this is the kind of response I was after. I have not given a lot of thought to the game engine. Would you advise one written open source in C# as well as any useful jQuery libraries? What is "core gameplay mechanic"? Is this needed by the controller? – CarneyCode Apr 25 '11 at 6:12
• Take an upvote for restoring my faith in SE outside the programmers forum – CarneyCode Apr 25 '11 at 6:24
• @Carnotaurus yep, FlatSilverBall in this context. Don't worry about the dependencies, you just need 2 (I think 3 now) DLLs (bundled with the sample app): FlatRedBall.DLL, and two related to SilverSprite. – ashes999 Apr 25 '11 at 11:12
• @Carnotaurus, that's correct. .NET will generate a single XAP file for you with all the dependencies inside; you just deploy it. – ashes999 Apr 25 '11 at 11:29
• @Carnotaurus you don't need Expression; just VS2010 (Express works for me), and Silverlight Tools (in addition to FSB) – ashes999 Apr 25 '11 at 11:41

Your question is still too vague and wide-ranging, which is why you only have one response currently. Perhaps you don't realise that it is vague because you're expecting game development to fit some sort of standard check list, but unfortunately it does not. For example, to take what you've mentioned in your response to ashes999, there is not necessarily a controller involved, nor is there even necessarily an engine involved. And the 'core gameplay mechanic' is just a pithy way of saying 'how does the player play'.

Regarding your Tumblr post, 99% of the stuff you've sketched out there would not be of relevance to a typical game developer. In particular games running in Silverlight would hardly ever need any jQuery and the MVC implementation you have (which looks more like MVP than MVC, really) looks like overkill for what would have originally been quite a simple game implemented with an infinite loop of get_input/update_data/render_screen calls.

• So, a game design would probably look nothing like the design of a high performance website? Now I am confused. I'm not asking you to design the layers for me but typically what would these look like? – CarneyCode Apr 25 '11 at 11:08
• I'll be using MVC 3 .Net but I agree that the diagram looks more like a WPF implementation (except for the use of "controller" instead of "presenter"). – CarneyCode Apr 25 '11 at 11:14
• A game 'design' usually looks like no other design, because it's about the game rules - the software is secondary. It certainly has little to do with software architecture, UML diagrams, or any of that. I don't understand where MVC 3 .NET would factor into this but that is just because hardly anybody would choose to make a game that way, not because it's impossible. Typically if you make a game in Silverlight (or Flash, or whatever), you make it -all- in that, as if it's a standalone program, not as a web application. – Kylotan Apr 25 '11 at 14:41