Is it possible to automatically create xna games in xna games? For example, a windows application from XNA that is a game creator, and the output is another XNA game.
Date: 18 Nov 2013 01:52
Number of posts: 5
RSS: New posts
An interesting thought. I'm sure there's a way you could do it, but you may end up needing to bend the rules/your ideas about what you want to do. If you're looking for some way that you could create a game engine, including the ability for others to write C# code to handle events or whatever, you've got your work cut out for you.
One of the biggest hurdles you'd face is the ability to compile code, including compiling art assets through the content pipeline. There's licensing issues surrounding that. In order to compile C# code or push things through the content pipeline, you need the actual SDKs. The XNA and C#/.NET redistributables don't include the C# compiler or the content pipeline. They're both free, but your users would have to go to Microsoft to get them.
That means your installation package won't be self contained if you want to truly have one XNA program build other XNA programs.
Now if you bend the rules a bit, you might be able to get around some of this. For instance, instead of having people write C# code that gets compiled and executed, most game engines use some form of simple scripting language. This includes things like Lua or Boo, but you could also define your own scripting language. (Hmm… give that a lot of thought before building your own. That's not a trivial task.)
For the content, well, there are other ways to get that data loaded. It's not too tough to load an image and populate a Texture2D manually. It's harder but not impossible to load 3D models into vertex and index buffers and draw them yourself. Audio and video are a little tougher. Off the top of my head, I'm not sure how you would do this, or if it's even really possible.
After all of that, it may be simpler to just require that users download the C# SDK (or Visual Studio, which includes that) and XNA (so that you can get and reuse their content pipeline).
So the bottom line is, I think you could manage something that would do what you're thinking about, but word of caution: actually doing so likely means a lot of work.
I'd love to hear from others, too, if anyone has tried doing anything like this. It sounds like an interesting challenge….
Your reply was very helpful.
Though, I have one more question. Would it be a different process if the xna game creator wrote it's own xna game? For example, a visual drag-drop thing, and a "publish" button that produces an xna game.
^^ Um.. I'll re-write that.
What if the creator did not require the user to not write code or upload anything? For example, a visual drop-down xna game creator. I'm not sure if you already answered my question… I'm not sure
Sorry for the delay in responding to it. In fact, I saw the notification a long time ago but I was at work and then I dropped the ball.
If you could get away with having the user-creator not write code (or perhaps some specialized scripting language of your own design that you can parse and turn into something executable on the fly) and if you could get away with having them not add their own content (or find ways to load the content yourself directly, without the content pipeline) this would be quite possible, I'd imagine.
But if you do this, you've got your work cut out for you. It isn't trivial. You're building an entire game engine on the top of XNA, without doing a particularly good job at allowing them to customize and extend the engine. (I'm certain there are ways around that though.)
And you have to consider who your users are. How many of them might be better off by actually downloading XNA or MonoGame or Unity, or some other application and just making the games directly? There's probably a market for this. I had a few friends who were seriously considering doing almost exactly what you're describing. I don't know how far they got (but probably not very far). (Or just make the program for fun, not as something that you expect to sell. I can imagine this would be an excellent way to learn all sorts of things.)